Boost には と の両方がenable_ifありdisable_ifますが、C++0x には後者がないようです。なぜそれは取り残されましたか?C++0x にメタプログラミング機能がdisable_ifあり、enable_if.
std::enable_ifああ、それは基本的に であり、C++0xboost::enable_if_cのようなものは存在しないことに気付きました。boost::enable_if
ばかげているように見えるかもしれませんが、bool テンプレート パラメータの!expression代わりに?のように動作させるだけです。もちろん、そのアイデアが機能する場合は、それを拡張して、のような動作を持つクラスを作成できますか?expressionenable_ifdisable_ifdisable_if
わかりました、次のように実装できると思いますdisable_if:
template <bool B, typename T = void>
struct disable_if {
typedef T type;
};
template <typename T>
struct disable_if<true,T> {
};