我是否应该尽可能在 C++11 中将“const int”替换为“constexpr int”?

2024-02-22

你会替换吗

const int one = 1;
const int two = 2;

有了这个?

constexpr int one = 1;
constexpr int two = 2;

我的理解是否正确,两个块在语义上是相同的,并且目前只是一个品味问题?

另一方面,作为constexpr暗示const,你可能会说,即使在没有什么区别的微不足道的情况下,总是更喜欢限制性更强的形式更一致?

(我理解,当允许右侧的表达式更复杂时,情况会完全改变。因此为了澄清起见,问题仅关注表达式为固定整数的最简单情况。)


我认为你的声明是这样说的const and constexpr "语义相同" 应该修改:它们都声明了值不能改变的对象,但是constexpr还要求初始化表达式在编译时可计算。

现在,如果右侧的表达式无法在编译时计算,则使用constexpr是不可能的。另一方面,只要初始化器是文字,您就可以could use constexpr,但请考虑变量的语义是什么:常量变量是否真的代表其值的东西should可以在编译时计算吗?

在软件维护/演化光学中,您可能会随着时间的推移改变初始化变量的方式:今天初始化器是一个文字,明天它可能是一个更复杂的表达式。

无论您以何种方式为其赋值now,你认为i是否需要用文字以外的任何东西来初始化,并且初始化表达式在编译时可能无法计算?如果是这种情况,那么只需将变量设置为const,即使您当前正在使用文字初始化它;否则,使其constexpr.

换句话说,选择最能表达变量语义的限定符。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我是否应该尽可能在 C++11 中将“const int”替换为“constexpr int”? 的相关文章

随机推荐

  • 点间最短距离算法

    给定平面上的一组点 找到由这些点中的任意两个点形成的最短线段 我怎样才能做到这一点 最简单的方法显然是计算每个距离 但我需要另一种算法来比较 http en wikipedia org wiki Closest pair of points
  • Nginx 身份验证(本地网络除外)

    来自 apache2 的一个功能我无法实现 仅要求对外部访问进行身份验证 但对本地网络上的用户进行免费访问 有什么想法可以轻松处理这种情况吗 任何帮助 将不胜感激 我已经删除了之前的答案 并想建议我在下面提供的解决方案 我做了一些搜索 找到
  • .net标准类库-不支持分布式事务错误

    我在 net标准类库项目中开发了一个日志服务 它可以完美工作 无需系统 事务 事务范围类 当我向进程添加事务时 记录器插入方法引发异常 该平台不支持分布式事务 当我使用 System Transaction 将代码添加到核心控制台应用程序时
  • 我应该如何在KAA中实现Rest API

    我使用 Kaa 沙箱发送通知 我必须在窗口终端上运行这些代码 curl v S u devuser devuser123 F notification applicationId 3 schemaId 4 topicId 1 type US
  • Python 全局变量的疯狂

    您有三个文件 main py second py 和 common py 通用 py usr bin python GLOBAL ONE Frank main py usr bin python from common import fro
  • Blazor - 在运行时更改 UI CultureInfo

    我需要根据每种文化的资源文件在运行时更改文化 Expected 用户单击从当前语言切换到另一种语言的按钮 页面中的文本根据每种文化的资源文件进行刷新 Actual 用户单击从当前语言切换到另一种语言的按钮 页面中的文本根据每种文化的资源文件
  • Visual Studio 2015 中没有针对 AngularJS TypeScript 的 IntelliSense

    我正在 Visual Studio 2015 的 TypeScript 中使用 ASP NET 5 和 AngularJS 构建一个应用程序 但是 即使在通过 NuGet 安装了 AngularJS Core 和 DefinelyTyped
  • React库如何直接需要它的源库?

    我正在查看 Facebook 的 React 源代码 发现在整个项目源代码中 他们没有指定加载自己模块的相对路径 例如 而不是做var foo require bar foobar 图书馆使用var foo require foobar 就
  • 批量插入到自引用表中

    这个问题是一部分一个更复杂的问题 https stackoverflow com questions 55047552 how to lock and unlock a sql server table noredirect 1 comme
  • 重命名 MySQL 中的外键列

    我们正在尝试重命名 MySQL 5 1 31 InnoDB 中作为另一个表的外键的列 起初 我们尝试使用 Django South 但遇到了一个已知问题 http south aeracode org ticket 243 http sou
  • 适用于运行 iOS 的 Cocoa iPhone 和 iPad 的 WebDAV 服务器

    我正在寻找适用于 iPhone 和 iPad 的 WebDAV 服务器 最好的开源服务器 以便集成到我的应用程序中 应该可以列出 下载和上传文件 我想将服务器根目录指向我的应用程序的 文档 文件夹 因此如果可能 这些方法应直接映射到文件系统
  • 使用 Gitolite 自动部署 PHP 脚本

    我想在本地测试服务器上设置自动部署脚本 我在 ubuntu 桌面 11 04 上使用 gitolite 我使用 apt get install gitolite 安装 gitolite 因此它创建用户 gitolite 和组 gitolit
  • 如何在 C (MacOS) 中获取进程虚拟内存映射的信息

    我想要获取有关 C MacOS 中当前进程的进程虚拟内存布局 堆栈 libc 堆和代码 的信息 我读到在 Linux 中你可以通过查看来做到这一点 proc
  • Android资源链接失败,错误:找不到属性defaultNavHost(又名...),未找到属性navGraph(又名...)

    我尝试在我的应用程序中实现导航功能 当我尝试构建应用程序时 输出显示 Android resource linking failed home mateusz AndroidStudioProjects TakeAndTie app src
  • 从 PowerShell 调用 Windows Shell 函数?

    所以我正在遵循这个教程 https msdn microsoft com en us library windows desktop hh127427 v vs 85 aspx https msdn microsoft com en us
  • iPhone 摄像机流媒体

    谁能确认这样的应用程序是如何完成的 袖珍相机 http www senstic com iphone pocketcam pocketcam aspx 是使用AVFoundation捕获摄像头视频流的方式吗 http developer a
  • 如何将选定的 HTML 转换为 Json?

    我想将部分 html 代码作为文件保存到 json 中 然后回顾 html 代码进行编辑 知道我该怎么做吗 div div div div
  • 如何将 c++filt 与 llvm-cov 报告一起使用?

    我正在尝试将 demangler 与 llvm cov 报告工具一起使用 以下是我正在运行的命令 llvm cov report path to executable instr profile path to default profda
  • 根据分组 ggplot2 条形的着色和阴影/纹理[重复]

    这个问题在这里已经有答案了 我正在尝试制作一个条形图 就像下面的示例数据和脚本一样 对 4 个个体在治疗前后进行测量 抱歉 我没有足够的声誉来上传示例图片 我想用某种颜色绘制个体 例如汤姆为绿色 弗雷德红色等 但对于代表治疗的条形 我想在颜
  • 我是否应该尽可能在 C++11 中将“const int”替换为“constexpr int”?

    你会替换吗 const int one 1 const int two 2 有了这个 constexpr int one 1 constexpr int two 2 我的理解是否正确 两个块在语义上是相同的 并且目前只是一个品味问题 另一方