gpt4 book ai didi

c++ - 为什么没有 enable_if 就不能编译?

转载 作者:行者123 更新时间:2023-11-30 04:15:53 25 4
gpt4 key购买 nike

如果我删除 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

最佳答案

如果没有 enable_if,您的转换运算符对于每种类型都存在。如果尝试为无法从 {x, y, z} 构造的类型实例化转换运算符,您会收到错误消息,但这不会改变运算符存在的事实。因为它存在,该类型被认为可转换为 double *,并且重载解析无法选择最佳匹配。

关于c++ - 为什么没有 enable_if 就不能编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18101139/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com