小编cho*_*cky的帖子

C++ constexpr std::字符串文字数组

我很高兴在我的代码中使用以下样式的常量字符串文字一段时间,但没有真正理解它是如何工作的:

constexpr std::array myStrings = { "one", "two", "three" };
Run Code Online (Sandbox Code Playgroud)

这可能看起来微不足道,但我对幕后发生的事情的细节感到模糊。根据我的理解,类模板参数推导(CTAD)用于构造适当大小和元素类型的数组。我的问题是:

  1. 在这种情况下, std::array 的元素类型是什么,或者这个实现是特定的?查看调试器(我使用的是 Microsoft C++),元素只是指向非连续位置的指针。
  2. 以这种方式声明字符串文字的 constexpr 数组是否安全?

我可以这样做,但它不是那么整洁:

const std::array<std::string, 3> myOtherStrings = { "one", "two", "three" };
Run Code Online (Sandbox Code Playgroud)

c++ stl

5
推荐指数
1
解决办法
6269
查看次数

标签 统计

c++ ×1

stl ×1