char[N], одним разом, вместо специализации для каждого? Есть у них какой нибудь объединяющий трейт?
Проверить конструируемость std::string от этой сущности?
std::is_array_v<T> || std::is_pointer_v<T>
а как это проверить?
Вероятно, std::decay поможет привести их все к указателю, а std::is_pointer, std::remove_pointer, std::remove_const и std::is_same<char, > помогут проверить
std::is_contrustible / std::is_convertible
Мне идея нравится, но в чуть другом виде: std::is_convertible_v<T, const char*>, ибо все они должны приводиться к const char* Но стоит быть аккуратнее с пользовательскими классами, имеющими соответствующий оператор приведения. Поэтому is_pointer_v<decay_t<T>> или is_pointer_v<T> or is_array_v<T> лишними не будут
Стикер
string_view? )
using string_view = boost::string_view
!std::is_same_v<std::remove_cv_t<T>, char> && std::is_same_v<char, decay_t<T»
Обсуждают сегодня