【发布时间】:2012-03-18 17:12:30
【问题描述】:
我对 C++11 标准进行了一些试验,并提出了这个问题:
在 C++11 中,您可以使用 auto 和 decltype 自动获取函数的返回类型,例如下面的 begin() 和 end() 函数:
#include <vector>
template <typename T>
class Container {
private:
std::vector<T> v;
public:
auto begin() -> decltype(v.begin()) { return v.begin(); };
auto end() -> decltype(v.end()) { return v.end(); };
};
我的问题是我必须在公开声明之前声明私有 vector<T> v,这违反了我的编码风格。我想在我的公共成员之后声明我所有的私人成员。您必须在函数声明之前声明向量,因为decltype 中的表达式是对向量成员函数begin() 的调用,并且需要对象的实例。
有没有办法解决这个问题?
【问题讨论】:
-
我想补充一点,我知道没有
auto怎么办,但问题是关于auto和decltype的使用。
标签: c++ coding-style c++11