假设我有这样的课程:
class Foo
{
std::vector<int> bar;
public:
std::vector<int>& get_bar() { return bar; }
};
稍后,我想要另一个与bar
. 如果我能做到这一点,这对我来说是有意义的:
decltype(Foo::bar) clone_of_bar;
但这不起作用。编译器告诉我'std::vector< int > Foo::bar' 是 private。
所以我最终不得不使用这样的东西:
std::remove_reference<decltype(std::declval<Foo>().get_bar())>::type clone_of_bar;
哪个有效,但看起来一团糟。也许有更简单的方法来做到这一点;我不太确定。但我真正想知道的是为什么我不能只使用decltype(Foo::bar)
. 为什么有人要关心这bar
是私人的?这不像我实际上正在访问该变量。
decltype
是语言的一个新特性。我只是不明白为什么它被设计为不适用于私有变量。