22

Boost には と の両方がenable_ifありdisable_ifますが、C++0x には後者がないようです。なぜそれは取り残されましたか?C++0x にメタプログラミング機能がdisable_ifあり、enable_if.


std::enable_ifああ、それは基本的に であり、C++0xboost::enable_if_cのようなものは存在しないことに気付きました。boost::enable_if

4

1 に答える 1

20

ばかげているように見えるかもしれませんが、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> {
};
于 2010-06-24T14:58:08.237 に答える