摘要: 我有一個code snippet編譯良好的g ++,但不與鏗鏘。非靜態數據成員錯誤與鏗鏘而不是g ++
詳細:
我已經編譯罰款與克+ +項目,但鏗鏘編譯時我得到error: use of non-static data member
錯誤。我試圖創建一個能夠證明問題的小測試用例,但對於小測試用例,g ++與clang給出了相同的錯誤。
我已經發布了236線文件引擎收錄演示該問題: http://pastebin.com/DGnfxmYe
當G ++ 4.6.3編譯能正常工作。但是,當鏗鏘3.2編譯我收到以下錯誤信息:
myhashmap.hpp:169:29: error: use of non-static data member 'num_bins' of 'MyHashMap' from nested type 'iterator'
for (_index++; (_index < num_bins) && (bins[_index] == NULL); _index++)
^~~~~~~~
myhashmap.hpp:169:43: error: use of non-static data member 'bins' of 'MyHashMap' from nested type 'iterator'
for (_index++; (_index < num_bins) && (bins[_index] == NULL); _index++)
^~~~
myhashmap.hpp:171:17: error: use of non-static data member 'num_bins' of 'MyHashMap' from nested type 'iterator'
if (_index < num_bins) {
^~~~~~~~
myhashmap.hpp:172:17: error: use of non-static data member 'bins' of 'MyHashMap' from nested type 'iterator'
_theNode = bins[_index];
^~~~
的代碼來看,是有意義的我,爲什麼鐺是給這些錯誤消息。我不明白的是爲什麼g ++首先正確編譯了代碼。我沒有寫這段代碼,但我想用clang來乾淨地編譯它。所以我正在努力理解它到底在做什麼。而且我會對理解爲什麼用g ++編譯而不是用clang編譯感興趣。 g ++是否以不同的方式解釋C++標準,或者是否有一些代碼正在利用的g ++擴展?