我已經得到了這個代碼從Windows到Linux端口。模板類的靜態模板字段?
template<class T, int Size>
class CVector {
/* ... */
};
template<int n, int m>
class CTestClass {
public:
enum { Size = 1 << n };
private:
static CVector<int, Size> a; // main.cpp:19
};
template<int n, int m>
CVector<int, CTestClass<n, m>::Size> CTestClass<n, m>::a; // main.cpp:24
它與VS2008編譯,但不與g ++ 4.3.2。 我收到的錯誤是:
main.cpp:24: error: conflicting declaration ‘CVector CTestClass::alpha_to’
main.cpp:19: error: ‘CTestClass< n, m >::alpha_to’ has a previous declaration as ‘CVector< int, CTestClass< n, m >::Size > CTestClass< n, m >::alpha_to’
main.cpp:24: error: declaration of ‘CVector< int, CTestClass< n, m >::Size > CTestClass< n, m >::alpha_to’ outside of class is not definition
是否有人知道如何讓它編譯通過G ++?
謝謝!
,我認爲它的另一個MSVC++的擴展,雖然我不知道。有人請點亮它。 – 2009-12-30 15:38:01