왜 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없이 enable_if http://ideone.com/nWdmJh
+ 컴파일 에러 http://ideone.com/FBMamF
배열은 어디에 있습니까? 그것은 단지'double *'을 직접 수행하는 변환을 선택하지 않습니까? (인스턴스화하면 실패하지만 과부하 해결은 이미 이전에 오류가 발생했기 때문에 인스턴스화되지 않습니다)? – hvd
배열? 허 ....? –
답장에서 붕괴를 편집하고 다시 넣었습니다. 다시 넣어서는 안됩니다 :) 다른 과부하를 제거하고 암시 적 변환을'double *'으로 강제 실행하면 작동하지 않습니다. 'double * '로의 변환은 불가능합니다. 'enable_if'가있는 것과없는 유일한 차이점은 발견 될 때입니다. – hvd