为什么Intellisense不适用于map <int,t =“”* =“”>?</int,>

时间:2015-02-04 18:44:32

标签: c++ visual-studio-2012 intellisense

我很惊讶,通过遵循intellisense的行为,为什么:

template<typename T>
struct Bar {
    std::map<int , int *> map;
    std::map<int , T *> map2;
    std::vector<int *> vec;
    std::vector<T *> vec2;

    T * doBar(void)
    {
        map./*displays everything*/
    --->map2./*displays only 4 members: at, swap and two operators*/   
        vec./*displays everything*/   
        vec2./*displays everything*/       
        return null;
    }
};
这是一个错误吗?或者,当第二个是T / T *时,仅显示4个成员背后有一些特殊原因? Logic会告诉我没有理由隐藏任何类型的finderase等方法,即使它们是模板second s。
使用未显示的函数编译代码不会引发任何错误,并且似乎可以正常工作。我正在使用Visual Studio 2012. (已经多次删除了智能感知数据库)

编辑:它确实看起来是VS2012特有的bug,刚刚确认它适用于VS2013

1 个答案:

答案 0 :(得分:0)

问题可能是std::map<int , T *>在这里是未知类型。可能有专业化。从个人经验来看,专业化往往会混淆Intellisense。