C++ 类中的函数模板参数推断
我一直认为函数模板参数推导只能用于下面这样的纯函数,而不能用于类C++ 类中的函数模板参数推断,c++,templates,template-argument-deduction,C++,Templates,Template Argument Deduction,我一直认为函数模板参数推导只能用于下面这样的纯函数,而不能用于类 template <class T1,class T2, class T3> T foo(T2 a, T3 b) { T o; //..do something return o; } 模板 T-foo(T2 a、T3 b) { TO; //做点什么 返回o; } 今天我碰巧在一个类中加入了这样的函数,它的工作原理如下 class MyClass { public: template &l
template <class T1,class T2, class T3>
T foo(T2 a, T3 b)
{
T o;
//..do something
return o;
}
模板
T-foo(T2 a、T3 b)
{
TO;
//做点什么
返回o;
}
今天我碰巧在一个类中加入了这样的函数,它的工作原理如下
class MyClass
{
public:
template <class T1,class T2, class T3>
T foo(T2 a, T3 b)
{
T o;
//..do something
return o;
}
}
class-MyClass
{
公众:
模板
T-foo(T2 a、T3 b)
{
TO;
//做点什么
返回o;
}
}
我在Linux中使用g++4.4。
这应该失败还是我误解了
我一直认为函数模板参数演绎可以
仅适用于以下纯函数,不适用于类
template <class T1,class T2, class T3>
T foo(T2 a, T3 b)
{
T o;
//..do something
return o;
}
这是错误的。自由函数和成员函数中的演绎没有区别
我一直认为函数模板参数演绎可以
仅适用于以下纯函数,不适用于类
template <class T1,class T2, class T3>
T foo(T2 a, T3 b)
{
T o;
//..do something
return o;
}
这是错误的。自由函数和成员函数的演绎没有区别。模板演绎适用于函数和方法 如果您有模板类,则类似于:
template <class T1, class T2>
class MyClass
{
public:
MyClass(T1 a, T2 b)
};
您必须显式地给出类型:
MyClass<int, int> m(42, 53); // Legal
MyClass m(42,53);//合法的
模板演绎适用于函数和方法
如果您有模板类,则类似于:
template <class T1, class T2>
class MyClass
{
public:
MyClass(T1 a, T2 b)
};
您必须显式地给出类型:
MyClass<int, int> m(42, 53); // Legal
MyClass m(42,53);//合法的
啊!很高兴知道这一点!谢谢!啊!!很高兴知道这一点!谢谢!对于一个类来说,操作符重载怎么样?我可以为这些创建一个模板版本吗?可以,有函数或方法。所以类型推断是有效的。非常感谢你的例子!对于一个类来说,操作符重载怎么样?我可以为这些创建一个模板版本吗?可以,有函数或方法。所以类型推断是有效的。非常感谢你的例子!