我很惊讶,通过遵循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会告诉我没有理由隐藏任何类型的find
或erase
等方法,即使它们是模板second
s。 答案 0 :(得分:0)
问题可能是std::map<int , T *>
在这里是未知类型。可能有专业化。从个人经验来看,专业化往往会混淆Intellisense。