C++11 で boost::mpl::identity
元々は std::identity として標準ライブラリに入る予定だったんですが、残念ながら削除されてしまいました。
と、いうことで現行の仕様だと std::common_type で代替出来ると聞いたのでやってみました。
[ソース]
#include <type_traits> #include <iostream> char func(int n){ return char(n); } int main(){ std::common_type<char(*)(int)>::type p[3] = { func, func, func }; std::cout << p[0](72) << std::endl; std::cout << p[1](73) << std::endl; std::cout << p[2](74) << std::endl; return 0; }
[出力]
H I J
使う機会は限られていると思いますが、覚えておいて損はないかなーと。
あと std::conditional とかでも可。