这是关于如何对elementsSize()成员函数做什么的问题,关于自动返回类型推导:
#include <iostream>
#include <vector>
template<typename Element>
class ElementVector
{
std::vector<Element> elementVec_;
// Other attributes.
public:
ElementVector() = default;
ElementVector(const std::initializer_list<Element>& list)
:
elementVec_(list)
{}
auto elementsSize() // -> decltype(elementVec_size())
{
return elementVec_.size();
}
};
using namespace std;
int main(int argc, const char *argv[])
{
ElementVector<double> e = {1.2, 1.3, 1.4, 1.5};
cout << e.elementsSize() << endl;
return 0;
}
上面的代码导致编译器警告(gcc 4.8.2):
main.cpp:20:27: warning: ‘elementsSize’ function uses ‘auto’ type specifier without trailing return type [enabled by default]
auto elementsSize() // -> decltype(elementVec_size())
我已经阅读过关于C++14无法使用decltype的自动返回类型推导选项。
写出注释掉的decltype
对我来说似乎很奇怪。我究竟做错了什么?
注意:我知道如果“其他属性”中没有向量,我可以继承自 std :: vector ,这正是我实际问题中的情况。
答案 0 :(得分:16)