constexpr字符串视图的初始化程序列表

时间:2018-11-12 08:34:26

标签: visual-c++ c++17 constexpr initializer-list

我正在尝试创建一些字符串常量的constexpr初始化程序列表。我认为这在C ++ 17中应该可行,但我无法在MSVC中进行编译。

#include <string_view>

using namespace std::literals::string_view_literals;

const constexpr std::initializer_list<std::string_view> some_strings{
    "asdf"sv
};

这将显示以下错误消息:

error C2131: expression did not evaluate to a constant
note: failure was caused by non-constant arguments or reference to a non-constant symbol
note: see usage of '$S1'

我不知道哪一部分是非constexpr:

  • std :: string_view的运算符“”是constexpr
  • std :: initializer_list的构造函数也是constexpr

有什么想法吗?这可能只是Visual Studio中的错误吗?错误消息中引用的“ $ S1”是什么?

编辑:Visual Studio 15.8.9

1 个答案:

答案 0 :(得分:0)

这似乎是旧版本的错误:https://godbolt.org/z/YICeqi

我刚刚在v15.9.2上尝试了您的代码,它工作正常。