constexpr Список инициализаторов строковых представлений

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


person leecbaker    schedule 12.11.2018    source источник
comment
Последний MSVC. Они заявили о 100% соответствии стандарту в 15.7, а я использую 15.8.9.   -  person leecbaker    schedule 12.11.2018


Ответы (1)


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

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

person Mac    schedule 23.11.2018