この単純なコードを Visual C++ 2012 で書いたとき、興味深いインテリセンス エラーが発生しました: 型の参照
"std::vector<Node*, std::allocator<Node*>> &" (non const-qualified)
タイプの値で初期化できません
"std::vector<Node*, std::allocator<Node*>>".
しかし、警告やエラーなしでコードを正常にビルドできます。では、なぜ Visual C++ 2012 はこのようなインテリセンス エラーを報告するのでしょうか?
#include <vector>
using std::vector;
class Node {
private:
vector<Node*> children;
public:
vector<Node*>& getChildren() {
return children;
}
void addChild(Node* child) {
children.push_back(child);
}
};
void f(Node* root)
{
vector<Node*>& tmp = root->getChildren(); // intellisense error on 'root' here
}
void main()
{
Node root;
Node child1, child2;
root.addChild(&child1);
root.addChild(&child2);
f(&root);
}