暗黙の型変換を許さないマクロ by Google OpenFST

OpenFstのソース読んでたら、DISALLOW_EVIL_CONSTRUCTORSっていう変わった名前のマクロを見つけた。
暗黙の型変換を許さないマクロなんだけど、名前がいかしてるなぁ。どうも、Google Codeで検索する限りGoogle内の用語っぽいね。

OpenFst/fst/lib/compat.h より

#define DISALLOW_EVIL_CONSTRUCTORS(type)    \
  type(const type&);                        \
  void operator=(const type&)

ってマクロを定義しておいて、

class example {
private:
    DISALLOW_EVIL_CONSTRUCTORS(example)
};

って使うみたい。明示的に暗黙の型変換を許さないということがわかって、ソース可読性も上がるね。ちょっと面白いテクニックだったので紹介。