【发布时间】:2017-01-27 03:30:45
【问题描述】:
我有一个模板化方法,其中返回类型将是 reinterpret_cast() 调用的结果。
class A {
void *_ptr;
public:
template<typename T>
T buffer() { return reinterpret_cast<T>(_ptr); }
};
这种方式让我在调用这个函数时使用<>-syntax:
A a;
auto b = a.buffer<double *>();
我更喜欢在没有模板参数的情况下调用此方法,并让编译器根据变量类型推断返回类型。
A a;
double *out = a.buffer();
这可以通过返回类型扣除吗?
我尝试使用auto、->-操作数和尾随返回类型语法。
auto buffer() -> decltype(reinterpret_cast<T>(_ptr)) const
{ return reinterpret_cast<T>(_ptr); }
但还是不行。
在 C++11 中有没有办法做到这一点?
【问题讨论】:
-
但是可变类型是
A。您的代码中没有关于返回类型的信息。你必须在某个地方定义它,即。using type = double; -
@Jaa-c 你能详细解释一下你的澄清要求吗?
标签: c++ templates c++11 methods return-type