相关疑难解决方法(0)

如何正确编写尾随返回类型?

假设我有这个功能模板:

template<typename T1, typename T2>
auto DoSomething(const T1& arg);
Run Code Online (Sandbox Code Playgroud)

当然这个函数需要一个尾随返回类型,考虑到函数的目的,我真的不能正确.

这个函数应该做的是使用和对象arg做一些操作,并使用该操作的结果作为函数的返回值.显然,返回类型必须(兼容)与为对象和对象完成的操作的返回类型匹配.argT2DoSomething()argT2

再次假设我们DoSomething()做了一些真正的操作,比如乘法.然后我们会DoSomething()像下面的代码一样编写:

template<typename T1, typename T2>
auto DoSomething(const T1& arg) -> /* trailing return-type */ {
    T2 t2Obj;   // Or have it obtained in some other way
    return arg * t2Obj;
}
Run Code Online (Sandbox Code Playgroud)

那么我应该如何为此形成尾随返回类型?


PS:我已尝试使用decltype(arg * T2),decltype(T1 * T2)以及decltype(T1::operator * (T2))其他一些看起来很奇怪decltype的尾随返回类型.他们都没有工作.

c++ c++11 trailing-return-type

7
推荐指数
1
解决办法
355
查看次数

标签 统计

c++ ×1

c++11 ×1

trailing-return-type ×1