Ну, есть std::string
и std::filesystem::path
.Но нет ни std::uppercase_string
, ни std::russian_string
, ни каких-либо других ...
Посмотрите, имеют ли эти ограничения огромное значение для интерфейса вашего конкретного класса.Если ограничения допускают какую-то совершенно новую операцию, немыслимую в общем классе, то она, безусловно, заслуживает выделенного класса с расширенным общедоступным интерфейсом.
И я бы, конечно, сказал громкое НЕТ, чтобы замаскировать значимую операцию как неявное преобразование,Тем более, если конверсия необратима.Такое преобразование может показаться заманчивым, и оно вполне может устранить некоторые текущие ошибки, вызванные пренебрежением, но также вероятно, что оно может привести к появлению совершенно новых ошибок, если нежелательное преобразование появилось без вашего ведома.
В противном случае вопрос в том,слишком общий ... Я полагаю, что нет решения, подходящего для всех случаев.Поэтому вы должны сравнивать плюсы и минусы в каждом конкретном случае.