什麼在下面是根據標準合式:推導出模板參數的順序?
// 1 : Deduced template parameter in the normal order
template<typename T, typename T1 = typename std::conditional<std::is_fundamental<T>::value, T, int>::type>
void f(T x);
// 2 : Deduced template parameter in the inverted order
template<typename T1 = typename std::conditional<std::is_fundamental<T>::value, T, int>::type, typename T>
void f(T x);
// 3 : Deduced template parameter before a function pointer
template<typename T>
void f(T x, void(*g)(int, int, T*));
// 4 : Deduced template parameter after a function pointer
template<typename T>
void f(void(*g)(int, int, T*), T x);
// 5 : Deduced template parameter with inversed variables
template<typename T, typename T1 = typename std::conditional<std::is_fundamental<T>::value, T, int>::type>
void f(T1 x, T y);
// 6 : Inverted deduced parameter
template<typename T, typename T1>
void f(T1 x, T y);
在圖3和4的情況下,如果從變量和函數內部傳遞的類型是不同的,這類型將作爲選:在函數之一,還是變量之一?
定義「好」。形式良好_and_定義明確_而不是未指定? –
'如果從變量和函數內部傳入的類型不同'它們不是。永遠。如果你試圖讓他們這樣做,那麼你傳遞不正確的參數,你的編譯將失敗。 –
你缺少特質背後的':: value'。 – jrok