Clang https://en.wikipedia.org/wiki/Clang和 Visual Studio 编译器(但不是GCC https://en.wikipedia.org/wiki/GNU_Compiler_Collection)允许编写如下代码:
struct A
{
operator auto() { return 0; }
};
int main()
{
A a;
a.operator auto();
}
What is operator auto
?它是特定编译器或标准语言功能的扩展吗?如果是,它出现在哪种语言标准(例如 C++17)中?
When auto
用于用户定义的转换函数 https://en.cppreference.com/w/cpp/language/cast_operator类型将通过返回类型推导来推导,即int
对于这种情况(0
)。这是在 C++14 中引入的。
占位符 auto 可用于转换类型 ID,表示一个推导的返回类型 https://en.cppreference.com/w/cpp/language/function#Return_type_deduction:
struct X {
operator int(); // OK
operator auto() -> short; // error: trailing return type not part of syntax
operator auto() const { return 10; } // OK: deduced return type
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)