メタ関数

VC++8.0以降には内にメタ関数がいくつか定義されています


std::_If(boost::mpl::if_c相当のもの)

#include <iostream>

int main()
{
    std::_If<sizeof(int) == 4, int, long>::_Result value = 30;

    std::cout << typeid(value).name() << std::endl;

    return 0;
}

boost::mpl::if_cを使った場合

#include <iostream>
#include <boost/mpl/if.hpp>

int main()
{
    boost::mpl::if_c<sizeof(int) == 4, int, long>::type value = 30;

    std::cout << typeid(value).name() << std::endl;

    return 0;
}

std::_Enable_Ifもありましたが、type_traitsがないのでいまいち役に立ちません