模板函數匹配不明原因的變化我有一個包含一個模板函數下面的代碼。當我使用枚舉的第二個參數調用此函數時:在某些情況下,它會查找模板特化,並且在某些情況下它不會。C++與枚舉
我已經驗證了枚舉在兩種情況下都是相同的枚舉(例如沒有重定義)並且其他參數具有正確的值,我發現一個編譯是使用-Winline集合完成的(我沒有嘗試更改它)還有什麼要看?
class A {
public:
template <typename T>
int f(uint32_t id, T const& t, bool cond);
...
};
template <typename T>
int A::f(uint32_t id, T const& t, bool cond)
{
...
}
template <>
inline int A::f<int>(uint32_t, int const& t, bool cond)
{
....
}
您允許其專業類外的函數模板而不在類中聲明的專業化? – 2011-02-10 02:58:12
@Jeremiah Willcock-是的,這是合法的。不過,您只能完全專注於此。我不知道爲什麼標準委員會決定合法。 – templatetypedef 2011-02-10 03:04:14