爲什麼下面的代碼不能編譯,如果我刪除enable_if?爲什麼在沒有enable_if的情況下不能編譯?
template<class T, class = typename std::enable_if<
std::is_constructible<T, double,double,double>::value
>::type >
operator T() const
{
return T{x, y, z};
}
示例代碼: 與enable_if http://ideone.com/nWdmJh
而不enable_if +編譯錯誤 http://ideone.com/FBMamF
數組在哪裏?難道它不直接選擇一個轉換嗎''double *'(如果實例化會失敗,但沒有被實例化,因爲重載解析早已出錯)? – hvd
數組?呵呵....? –
你編輯了你的答案腐敗,並把它放回去。你不應該把它放回:)只是嘗試刪除其他超載,並強制隱式轉換爲'double *':它不會工作。轉換爲'double *'是不可能的。有和沒有'enable_if'之間唯一的區別是什麼時候被檢測到。 – hvd