`constexpr boost::static_strings::basic_static_string s( "name" );` fails
constexpr boost::static_strings::basic_static_string s( "name" ); fails to compile (under C++20): https://godbolt.org/z/fvPs3rxa7
Background: in order to write functions that take strings as template arguments, as in function<"string">(), one needs to declare the template parameter a static string, because neither char const* nor std::string_view work.
To avoid needless reinvention of static strings, ours should (probably) be useful in this role. But it isn't, for at least the reason above.
@pdimov This is because of a shortsighted design choice I made to optimize zero size strings, accomplished via a virtual base class. Removing this and making the non-static data members public would allow for it to be used as a NTTP.
I think this specific problem isn't caused by the class not being structural, though. The error comes from std::char_traits.
Looks like an issue with libstdc++.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113200