我一直在尋找一個明確的答案,我只是從網絡上捕捉點點滴滴。顯式模板函數和方法專業化
我有一個函數,它需要基於類型變量採取不同的行爲。該函數不帶任何參數,所以重載不起作用,導致模板專業化。例如:
//Calls to this function would work like this:
int a = f();
int b = f<int>();
int c = f<char>();
//...
首先,即使在句法上可能嗎?我感覺就是這樣。繼續。
我在定義這個函數時遇到了問題,因爲我掛上了顯式專業化的語法。我嘗試了很多不同的方法,但我還沒有得到一個簡單的例子來工作。其次,我試圖(最終)將該模板函數轉換爲(非模板)類的模板方法。當我來到它時,我會穿過那座橋。
謝謝
伊恩
謝謝。我曾猜測 - 嘗試過這一點,但我的鏈接器一直在說有多個定義的符號? – imallett
你在一個頭文件中寫過這些文件,並且包含在幾個翻譯單元中?從這個意義上講,模板函數的顯式特化就像是一個常規函數。你將不得不將它們定義爲「inline」,或者在一個未命名的命名空間(C++「靜態」等價物)中定義它們。否則,只需在頭文件中聲明它們並在cpp文件中定義它們。 –
是在標題中;但包括守衛。我能夠使用一個未命名的命名空間xor內聯。然而,當我去解決第二個問題時(將它變成一種方法),它再次失敗(嘗試內聯)。至於把它放在一個.cpp文件中,iirc在C++實現中分離模板沒有問題? – imallett