19 std::variant<std::string, std::string_view> data;
28 std::string_view view;
30 Ptr(std::string_view view): view(view) {}
31 const std::string_view * operator->()
const {
return &view; }
52 return std::holds_alternative<std::string>(data);
55 std::string toOwned() &&
58 ? std::move(std::get<std::string>(data))
59 : std::string(std::get<std::string_view>(data));
62 std::string_view operator*()
const
65 ? std::get<std::string>(data)
66 : std::get<std::string_view>(data);
68 Ptr operator->()
const {
return Ptr(**
this); }