On 03/13/17 15:49, Vic Luo via Boost wrote:
This is a long known issue. You should implement your own string comparison routine which is constexpr. As you mention, Boost's string_view is constrained by the STL's implementation of char_traits.
Would it be OK to implement our own constexpr char_traits(just replace ::compare, ::length), then use boost::basic_string_view
as our CONSTEXPR_STRING_VIEW and compare views with constexpr boost::string_view::compare(a, b) == 0? This way seems to work on my g++-6 which prevents reinventing the wheel.
First, it would make interaction with std::string (and its cousins) problematic since they would still use std::char_traits, not boost::char_traits. Second, there is currently no way to select constexpr or runtime implementation of a function depending on the arguments. This means that the optimized versions of strlen/strcmp can't be used when the arguments of string_view are runtime values. IMO, the second problem is a showstopper for constexpr string_view.