gpt4 book ai didi

c++ - 为什么自定义转换函数模板不能有推导的返回类型?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:09:12 25 4
gpt4 key购买 nike

以下规则的原因是什么,“用户定义的转换函数模板不能具有推导的返回类型。”

struct S {
operator auto() const { return 10; } // OK
template<class T> operator auto() const { return 42; } // error
};

最佳答案

即使允许,在第二行中,也没有任何依赖于模板的内容。它不能被调用(在那种情况下 T 的目的是什么?)

如果你想转换为用户定义的类型,那么你会这样做:假设您有:

struct S
{
template<typename T> operator T() { return T(42); }
};

这很清楚,不需要推论什么。你会这样调用它:

S s;
int v = s;
float f = s;

请注意,在那种情况下,在上面的代码中使用 auto 而不是 float 会阻止编译器推断类型(它是 float ? int ? Orange ?)。上面的句子简单地解释了这一点。

关于c++ - 为什么自定义转换函数模板不能有推导的返回类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57889615/

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