decltype声明函数返回类型的参数(不带auto)

时间:2013-12-03 14:24:56

标签: c++ c++11 decltype

这对我来说似乎是一个微不足道的问题,也许我找不到合适的文档..

我有一个结构A,我想将参数b定义为函数A的返回类型:

struct A{
    int operator[](int);
};

然后在某个时候

decltype(A::operator[]) b = 0;

我能做到这一点:但它太丑了......

A a;
decltype(a[0]) b = 0;

(可以是double / int等),我不想使用模板。

谢谢,

1 个答案:

答案 0 :(得分:2)

除了使用语法之外,我不太了解需要。这正是auto的设计目标,auto由添加decltype的同一标准支持...

无论如何,您需要模拟函数调用:

decltype(std::declval<A>()[0]) b = 0;   // equivalent to `int b = 0;`