考慮以下的簡單代碼:模板專業化是如何工作的?
template<typename U>
U foo(U a, U b){
//we don't really care about the body
return a + b;
}
和實例:
int a = foo(1, 2);
我明白,編譯時,foo是專業化,編譯器生成:
int foo(int a, int b){
//we don't really care about the body
return a + b;
}
什麼是序列編譯器通過它生成這個專門的代碼?例如,我知道如果U沒有'+'運算符,那麼代碼將不會編譯,因此會執行一些成員函數表檢查,並且在某個點上會生成函數簽名。
是否有返回類型,參數,操作等被評估的特殊命令?
「它是否編譯正確」 如果編譯不正確,它不會做任何專門化。 –
我已經調整了問題以闡明我的意圖。 –
你有沒有試過編譯你的代碼? –