c++17标准适配问题

最近想把代码由c++14适配到c++17标准,遇到了一些兼容性问题,在此记录一下。

  • 修改cmake文件

    CMAKE_CXX_FLAGS中设置-std=c++17
    在这里插入图片描述
    改为
    在这里插入图片描述


  • error: ISO C++17 does not allow ‘register’ storage class specifier

register关键字在c++11中被弃用,c++17中被删除
在CMAKE_CXX_FLAGS 中增加 -Wno-error=register

在这里插入图片描述


error: reference to ‘byte’ is ambiguous

因为c++17中引入了std::byte类,但代码中有如下定义
在这里插入图片描述

导致了命名冲突,修改typedef的定义为
在这里插入图片描述


error: ISO C++17 does not allow dynamic exception specifications
[-Wdynamic-exception-spec]

c++17中不再支持异常规格,异常规格部分删除
在这里插入图片描述

在这里插入图片描述


error: use of undeclared identifier ‘ptr_fun’

将对应内容换为lamda表达式
c++17标准适配问题_第1张图片
在这里插入图片描述

你可能感兴趣的:(c++,c++17,c++,开发语言,后端)