构造函数的模板实参推导

template argument deduction for constructors

本文关键字:实参 构造函数      更新时间:2023-10-16

c++ 0x有(或者c++ 0x在某个时间点将要有)构造函数的模板参数推导吗?在对即将到来的c++ (c++ 0x)标准的概述中,我看到了以下几行:

std::lock_guard l(m);   // at 7:00
std::thread t(f);       // at 9:00

这是否意味着委派make_foo函数模板最终是多余的?

模板实参推导适用于任何函数,包括构造函数。但是不能从传递给构造函数的实参中推断出类模板形参。不,你不能在c++ 0 x。

struct X
{
    template <class T> X(T x) {}
};
template <class T>
struct Y
{
    Y(T y) {} 
};
int main()
{
   X x(3); //T is deduced to be int. OK in C++03 and C++0x; 
   Y y(3); //compiler error: missing template argument list. Error in 03 and 0x
}

lock_guardthread不是类模板。它们有构造函数模板