コンパイル時if文
mpl::if_<条件, 真のときの型, 偽のときの型>::type
namespace shand { namespace mpl { // if_c template <bool Cond, class Then, class Else> struct if_c; template <class Then, class Else> struct if_c<true, Then, Else> { typedef Then type; }; template <class Then, class Else> struct if_c<false, Then, Else> { typedef Else type; }; // if_ template <class Cond, class Then, class Else> struct if_ { typedef typename if_c<Cond::value, Then, Else>::type type; };
#include <iostream> #include <shand/type_traits.hpp> #include <shand/mpl/if.hpp> using namespace std; using namespace shand; using namespace shand::mpl; int main() { if_<is_integral<int>, int, char>::type value; // intが整数型ならint, intが整数型じゃなかったらchar cout << typeid(value).name() << endl; return 0; }