型推論は万能ではない

注意: この記事は1年以上前に掲載されたものです。情報が古い場合がありますのでお気を付け下さい。

最近の静的片付けプログラミング言語でも、変数の型を指定せず、そのリテラル型や返り値などから型を判定する「型推論」という機能があるが、実のところ、これは必ずしも万能とは言い切れない。言語にもよるが、想定していた型とは違う型になってしまうばあいもある。これは多くの場合問題になることはないが、メモリーが絡む部分や特定の場所で問題になることもある。

例えば、C++で以下の変数が割り当てられる。

auto foo = 10;

上記の型は当然ながら、int型になる。この場合は、引数にint型が指定されていれば基本的に問題はない。

落とし穴になりがちなケースとして、以下が当てはまる。

auto str = "hello";

これは、std::stringを想定したくなるが、実際にはmacOS環境ではconst char *となる。もしかしたら環境によっては別の型が割り当てられるかもしれない。

これは、autoを使った型推論をしたからといって、それを過信してはいけないということである。

もちろん、型推論は非常に便利であるので、有効に使っていきたいものである。

タイトルとURLをコピーしました