嗯,我得到了下面的模板(其中包含一個很大的錯誤):模板instanciation錯誤,MSVC VS GCC
template <class FluxVar = IloIntVar, class FluxVarArray = IloIntVarArray,
class DelayVar = IloIntVar, class DelayVarArray = IloIntVarArray,
class LoadVar = IloIntVar, class LoadVarArray = IloIntVarArray,
class BoolVar = IloBoolVar, class BoolVarArray = IloBoolVarArray>
class MyClass {
public:
int getAlpha() { return m_alpha ; }
private:
int m_alpha1 ; // See the "1" here
}
在我的代碼,我做這樣的事情:
MyClass <> myClass1 ;
MyClass <IloNumVar, IloNumVarArray, IloNumVar, IloNumVarArray, IloNumVar, IloNumVarArray> myClass2 ;
MyClass <IloNumVar, IloNumVarArray, IloNumVar, IloNumVarArray, IloNumVar, IloNumVarArray, IloNumVar, IloNumVarArray> myClass3 ;
/* Some stuff with my class BUT NEVER CALL TO myClassX.getAlpha() */
上面的代碼與MSVC但與GCC編譯,說(當然):
MyClass.h:109:39: error: m_alpha was not declared in this scope
所以我的問題是:是什麼標準說這個?這是來自MSVC的優化嗎?如果是這樣,在這種情況下優化了什麼?
我認爲MSVC不會生成getAlpha
的代碼,因爲它從來沒有被調用,但像MSVC一樣,我認爲這不是一種標準行爲。
你可以發佈帶參數的實例代碼嗎? –
@Marco Post編輯,但我認爲它會做任何模板相同。 – Holt