C++ 中的运算符 auto 是什么?

费多

clang和 Visual Studio 编译器(但不是gcc)允许编写如下代码:

struct A
{
  operator auto() { return 0; }
};

int main()
{
   A a;
   a.operator auto();
}

你能解释一下是operator auto什么吗?它是特定编译器的扩展还是标准语言功能,如果是,它是在什么语言标准(例如 C++17)中出现的?

songyuanyao

auto用户定义的转换函数中使用时,类型将通过返回类型推导来推导,即int对于这种情况 ( 0)。这是从 C++14 开始引入的。

占位符 auto 可用于convert-type-id,表示推导的返回类型

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
};

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

C ++中的运算符“”是什么?

澄清:是什么使“ new”成为C ++中的运算符

这个“ >> =”运算符在C中是什么意思?

C#中的“ <<”运算符是什么意思

什么是C / C ++中的“->”运算符?

运算符“”在C ++中做什么?

什么是C ++中的“->”运算符?

什么是“-” C ++中的运算符?

什么是C ++中的<=>运算符?

什么是C中的>>> =运算符?

什么是C ++中的“ <?=“运算符?

C ++ +运算符的用法是什么?目的是什么?

在C#中设置int时,逗号运算符/分隔符的机制是什么?

问号和点运算符是什么?在C#6.0中意味着什么?

为什么“ as”运算符在C#中不使用隐式转换运算符?

在C#中的属性中,“ =>”运算符是什么意思?

在两个列表中应用运算符的C#惯用方式是什么?

C中带有条件运算符的表达式的类型是什么?

C中逻辑运算符组合的含义是什么

在C ++中定义Typecast运算符模板的正确方法是什么

:: *(作用域运算符后的星号)在C ++模板中是什么意思?

在现代C ++中重载算术运算符的“最佳”方法是什么?

C++中“<”和“>”字符串运算符背后的逻辑是什么?

在c ++ boost :: adaptors :: filtered中,管道运算符的作用是什么?

C ++中的运算符(:: Type *)0是什么意思

Python中%或.format运算符的C ++等效项是什么?

C中~和&二元运算符的含义是什么

Python的“ in”运算符的C ++等效项是什么?

这个运算符在c ++中做什么?