为什么不编译此代码?构造函数中的C++模板参数
template <class T>
class A
{
public:
A(T t) : t_(t) {}
private:
T t_;
};
int main()
{
A a(5.5);
// A<double> a(5.5); // that's what i don't want to do
}
我希望模板参数是隐含的。
就像这个例子:
template<class T>
T Foo(T t) { return t; }
// usage:
Foo(5.5);
UPDATE:命名的构造函数用法是不能接受我。我想为RAII使用这个类。 这样做的唯一方法是const A& a = A::MakeA(t)
,但它很丑!
简要答案是“你不能”。类模板根本就不能这样工作。我会把它留给别人来试图解释理由。 – 2010-08-19 11:15:08