为什么下面的代码不能编译,如果我删除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