2012-03-27 53 views
4

我發現了幾個關於C++ 0x中的模板typedefs的問題,這些問題用using關鍵字解決;然而,與GCC 4.6.1(運行g++ -std=c++0x),我收到以下錯誤:template typedef C++ 0x

錯誤:「使用」之前預期不合格-ID

你能幫我找到我要去哪裏錯了嗎?我一直在試圖解決這個問題了幾個小時......

代碼:

#include <map> 

template<typename INDEX, typename VALUE> 
class GenericSparseVector 
{ 
protected: 
    std::map<INDEX, VALUE> indices_to_values; 
}; 

template <typename VALUE> 
using StandardSparseVector = GenericSparseVector<int, VALUE>; 
+0

只是一個猜測,嘗試'模板使用StandardSparseVector = GenericSparseVector ;' – 2012-03-27 02:25:40

+0

嗯...仍然沒有運氣。看起來我沒有足夠新的GCC版本。 – user 2012-03-27 02:31:23

回答

7

模板別名在GCC 4.7開始支持。

+0

+1:看http://gcc.gnu.org/projects/cxx0x.html – 2012-03-27 02:27:38

+0

哦,我不敢相信我試了這麼久!我確定像其他人一樣,我錯過了一個分號問...感謝您的幫助。 – user 2012-03-27 02:32:11

+0

感謝您的鏈接。我使用clang(Apple clang版本4.1)原型化了一些代碼,但是當我使用gcc 4.6.1切換到Linux時,它不再編譯。 – Joel 2012-11-29 15:29:15