我很驚訝,按照智能感知的行爲,原因是:爲什麼Intellisense不適用於地圖<int, T *>?
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個成員有一些特殊原因?邏輯會告訴我沒有理由隱藏任何類型的方法,如find
或erase
,即使它們的模板爲second
s。
使用未顯示的函數編譯代碼不會引發任何錯誤並顯示正常工作。我使用Visual Studio 2012 (和已經被刪除的智能感知數據庫幾次)
編輯:這確實似乎是VS2012具體的錯誤,只是證實了它的工作原理與VS2013
在VS2013中正常工作。我們稱之爲2012年特定的錯誤。 –
@HansPassant感謝這個信息(回答非常多),我應該刪除這個問題嗎? – wondra