我對模板沒有太多的經驗,但我想知道下面的情況是否可行。假設我們有一個擁有靜態成員stat的S類。我可以得到它的typeid使用作爲動態生成不同的代碼:基於靜態成員類型的模板功能專業化
template <class S> void foo() { if (typeid(S::stat) == typeid(AType)) implementation 1; else implementation 2; }
但是,由於所有的信息在編譯時是已知的是有可能創造的foo與S的專業化::型A型的統計之中?
foo_impl <類型名稱的s :: stat>的:: foo的(); 這與Visual Studio生成以下錯誤:錯誤 C2143:語法錯誤:缺少 '' 前 'MyClass的:: _ stat64中' MyClass的::統計是一個靜態常量變量。它可以作爲typename S :: stat的引用嗎? –
@KostasKyriakopoulos您需要爲變量選擇與「stat」不同的名稱。該名稱與來自C庫的stat()系統調用衝突。 –