これは、C++ を勉強するために私が書いた単純なテンプレート progs です。
#include <type_traits>
#include <iostream>
using namespace std;
template<typename T>
T foo(T t, true_type)
{
cout << t << " is integral! ";
return 2 * t;
}
template<typename T>
T foo(T t, false_type)
{
cout << t << " ain't integral! ";
return -1 * (int)t;
}
template<typename T>
T do_foo(T t){
return foo(t, is_integral<T>());
}
int main()
{
cout << do_foo<int>(3) << endl;
cout << do_foo<float>(2.5) << endl;
}
派手なことは何もしませんが、コンパイルして動作します。
その部分がどのように機能するのか疑問に思っていis_integral<T>()
ます。
私はこれを読んでいました: http://en.cppreference.com/w/cpp/types/is_integralそして、私はこの動作の特定の説明を見つけることができません - の定義はありませんoperator()