我遇到了这段代码(我试图包括所有细节,以防我遗漏了什么):
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
? - 在上面的例子中使用它的目的是什么?
- 没有第三个问题。
任何帮助表示赞赏..
编辑结果函数只能用 c++11 编译