私はこのコードに出くわしました(何かが足りない場合に備えて、すべての詳細を含めようとしています):
template< typename TYPE = TYPE_with_an_arbitrarily_long_name,
typename KIND = KIND_with_an_arbitrarily_long_name>
class Foo
{
public:
virtual void bar(TYPE& t, KIND& k) = 0;
};
そして、私が理解していない部分は、テンプレート内の割り当てです。
template <typename TYPE = TYPE_with_an_arbitrarily_long_name, ..
私はこれの効果を理解しようとしてきましたが、今のところ何も生み出すことができませんでした。これが私が試したものです:
#include <iostream>
#include <typeinfo>
using namespace std;
template<typename T>
void foo(T t) {
cout << typeid(t).name() << " ";
}
template<typename T = int>
void bar(T t) {
cout << typeid(t).name() << " ";
}
template<typename T = double>
void baz(T t) {
cout << typeid(t).name() << " ";
}
int main()
{
cout << "\nfoo: ";
foo(3); foo<int>(3); foo<double>(3);
cout << "\nbar: ";
bar(3); bar<int>(3); bar<double>(3);
cout << "\nbaz: ";
baz(3); baz<int>(3); baz<double>(3);
return 0;
}
プリントアウト:
foo: i i d
bar: i i d
baz: i i d
だから私の質問は:
- 内部での割り当ての効果は何
template
ですか? - 上記の例で使用する目的は何ですか?
- 3番目の質問はありません。
どんな助けでも大歓迎です。
EDITで判明した関数はc++11でのみコンパイル可能です