隐式类型转换和模板推导
当尝试将 int 隐式转换为 Scalar
在提供的代码中:
<code class="cpp">func(a, 2);</code>
the编译器尝试将 int 2 隐式转换为 Scalar
<code class="cpp">func(a, Scalar<int>{2}); // C++14</code>
或者,如果使用 C 17,则可以为 Scalar 定义推导指南,允许使用以下语法:
<code class="cpp">func(a, Scalar{2});</code>
最后,使用指定类型参数显式实例化模板函数也可以绕过隐式转换的需要:
<code class="cpp">func<int>(a, 2); // Assuming Scalar<T>::Scalar(T) is not explicit</code>
以上是为什么用户定义类型的隐式类型转换时模板推导失败?的详细内容。更多信息请关注PHP中文网其他相关文章!