constexpr Инициализатор список строковых представлений - PullRequest
0 голосов
/ 12 ноября 2018

Я пытаюсь создать список инициализаторов 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

Есть идеи? Это просто ошибка в визуальной студии? Что означает «$ S1» в сообщении об ошибке?

РЕДАКТИРОВАТЬ: Visual Studio 15.8.9

1 Ответ

0 голосов
/ 23 ноября 2018

В старых версиях это похоже на ошибку: https://godbolt.org/z/YICeqi

Я только что попробовал ваш код на v15.9.2, и он отлично работает.

...