我怀疑这种方法是否可行,假设你想要两种方法同时调用一个函数,一种是返回一个对象而另一种是通过引用返回参数:
// ...
template <class T> void func(Foo<T>& f, const T n)
{
f.a = Something(f.a + n);
f.b = Something(f.b + n);
}
template <class T> Foo<T> func(const Foo<T>& f, const T n)
{
return Foo<T>( Something(f.a + n), Something(f.b + n) );
}
// ...
// main
Foo<int> foo(1, 1);
func(foo, 2);
Foo<int> foo2 = func(foo, 2);
Run Code Online (Sandbox Code Playgroud)
第一个参数中的const字是否影响方法的签名?
是的,它确实.const影响签名,返回类型不会.
有关参与重载决策的函数的信息(13.3):它的参数类型列表(8.3.5),如果函数是类成员,函数本身和类的cv限定符(如果有的话)其中声明了成员函数.[...]
const 是hte parameter-type-list的一部分,因此它确定了一个重载.
| 归档时间: |
|
| 查看次数: |
90 次 |
| 最近记录: |