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
代わりに?のように動作させるだけです。もちろん、そのアイデアが機能する場合は、それを拡張して、のような動作を持つクラスを作成できますか?expression
enable_if
disable_if
disable_if
わかりました、次のように実装できると思いますdisable_if
:
template <bool B, typename T = void>
struct disable_if {
typedef T type;
};
template <typename T>
struct disable_if<true,T> {
};