爲什麼我收到非法引用非靜態成員... typedef?
錯誤C2597:非法引用非靜態成員
'derived<<unnamed-symbol>>::T'
,當我嘗試編譯在Visual C++ 2010的x64代碼? (在x86上看起來很好......哪一個是正確的?)
struct base { typedef int T; };
template<class>
struct derived : base
{
using base::T;
derived(T = T()) { }
};
int main()
{
derived<int>();
return 0;
}
我無法重現x64的問題MSVC 11.0 –
我在VS2010 x86上也遇到同樣的錯誤。似乎問題是'T()'默認值。如果將實例更改爲'derived(0);'編譯。不知道什麼是呃逆。 –
Praetorian
不應該是'template'或'template '? –
Recker