【初心者歓迎】C/C++室 Ver.43【環境依存OK】at TECH
【初心者歓迎】C/C++室 Ver.43【環境依存OK】 - 暇つぶし2ch99:デフォルトの名無しさん
07/09/30 14:16:00
>>90
#include <stdio.h>
#include <boost/type_traits.hpp>

class test1 {
public: static void foo() {printf("test1\n"); }
};
template<typename t, typename result, typename arg>
class test2 {
public: static void foo() {printf("test2\n"); }
};
template<typename t, typename arg>
class test3 {
public: static void foo() {printf("test3\n"); }
};

namespace detail {
template<typename t, typename sig> struct selector {
 typedef test1 type;
};

template<typename t, typename result, typename arg> struct selector<t, result (t::*)(arg)> {
 typedef typename boost::mpl::if_<boost::is_void<result>, test3<t,arg>, test2<t,result,arg> >::type type;
};
}

int main(int argc, char *argv[]) {
 detail::selector<test1,void>::type::foo();
 detail::selector<test1,int(test1::*)(int)>::type::foo();
 detail::selector<test1,void(test1::*)(int)>::type::foo();
 return 0;
}


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch