不那么新的C++标准学习笔记 logo 不那么新的C++标准学习笔记

编译器支持最低版本要求:

  • GCC: 7
  • MSVC: 19.1
  • Clang: 3.9

提案: P0305R1

C++17之前的标准下,有如下代码:

QVariant var = getAnswer();
if (var.isValid())
   use(var);

在C++17时可以这样写:

if (QVariant var = getAnswer(); var.isValid())
   use(var);

除了if外,switch也支持这种新写法:

switch (Device dev = get_device(); dev.state())
{
case sleep: /*...*/ break;
case ready: /*...*/ break;
case bad: /*...*/ break;
}

这个写法秉持了C++相对于C的一个理念上的区别:变量/对象在需要时才声明和定义。这里还更进一步,缩短变量/对象的生命周期。

感觉不错,小额赞助一下!

Hosted by Github Pages, 本站由 @missdeer 创建,由 Jekyll 于 2019-05-07 生成,感谢 CloudCannon 制作的theme: Edition ,感谢 Let's Encrypt 提供免费的SSL证书服务。本站点采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。© 2019