Hello World / plɹoM ollǝH

Programmers Live in Vain

C++11 template で暗黙の型変換を防ぐ

先に普通の関数定義をして、そのあとテンプレート関数定義を書いて存在を消しておく

class Hoge {
public:
  void do_something(uint8_t* hoge) { printf(hoge); }
  template <class Ty> void do_something(Ty x) = delete;
};

int main() {
  auto hoge = Hoge();
  uint8_t c;
  uint32_t i;
  hoge.do_something(&c); // OK
  hoge.do_something(&i); // NG
};