У меня есть класс, который содержит несколько константных строк в виде:
using namespace std::string_view_literals;
class T {
static const constexpr std::string_view something1 = "Alice"sv;
static const constexpr std::string_view something2 = "Bob"sv;
static const constexpr std::string_view something3 = "Charlie"sv;
...
};
Я в настоящее время using
пространство имен string_view_literals
, но это не очень хорошая практика в заголовочном файле, и генерирует предупреждения:
Using namespace directive in global context in header [-Wheader-hygiene]
(лязг)
literal operator suffixes not preceded by '_' are reserved for future standardization [-Wliteral-suffix]
(gcc7)
Я бы хотел посмотреть другие варианты.
- Игнорировать предупреждения
Прямой импорт одного используемого мной литерала вместо всего пространства имен
using std::string_view_literals::operator""sv
Поскольку это константа constexpr, возможно, мне следует просто вызвать конструктор напрямую, зная, что у него нет памяти во время выполнения или загрузки ЦП:
static const constexpr something1 = std::string_view("Alice");
Что-то еще?