Open pdimov opened 9 months ago
@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++.
constexpr boost::static_strings::basic_static_string s( "name" );
fails to compile (under C++20): https://godbolt.org/z/fvPs3rxa7Background: 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 neitherchar const*
norstd::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.