构造函数的模板实参推导
template argument deduction for constructors
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_guard
和thread
不是类模板。它们有构造函数模板
相关文章:
- 在调用基类构造函数之前修改构造函数参数值
- 当复制构造函数是私有且未实现时,是否允许 RVO
- 成员函数指针的模板实参演绎
- 函数和函数作为模板函数的实参
- 哪个模板形参在boost::shared_ptr构造函数中使用一个原始指针
- 传递boost::函数,该函数接受一个模板实参作为默认为NULL的形参
- 函数模板中返回类型的模板实参演绎
- 具有构造函数的实例数组
- 带有const实参的c++构造函数
- 函数指针作为模板实参而不是函子
- 当涉及一个重载函数作为实参时,模板实参推导是如何工作的
- 如何在构造函数中指定不可推导的模板形参
- 将函数形参的实参解包到c++模板类
- 从模板实参的子类中推断函数模板形参
- 函数对象应该是函数实参还是它的引用?
- 如何传递操作符作为默认函函数实参
- c++模板类:没有构造函数实例与实参列表匹配
- 如何获得构造函数的实值
- 继承带有默认实参的构造函数
- 构造函数的模板实参推导