struct ABC {};
template<typename T>
class DEF
{
void f0(typename T::ab) {} //ERROR
void f1() {typename T::ab var;} //Fine
};
DEF<ABC> obj;
我想如果我不使用類模板的特定成員函數,它永遠不會被編譯器構造。因此,即使f1()
與預期的代碼編譯罰款,因爲obj
從來沒有使用它。爲什麼f0()
的存在會導致編譯錯誤?我也沒有使用它。爲什麼在這種情況下構造類模板的成員函數?
{MinGW的克++ 4.7.2,視窗7}
編譯器錯誤說什麼? –
錯誤:在'struct ABC'中沒有類型命名爲'ab' – ustulation