Предположим, что у меня есть пользовательский строковый класс:Выберите шаблон строки неявно пропусканием константный символ *
class my_string : public std::string
{
// ...
}
И я хочу сделать шаблонный функцию, которая принимает и с my_string
по умолчанию:
template <typename TString = my_string>
TString do_something(const TString& input)
{
// ...
}
Но когда я называю его:
auto result = do_something("abcdef");
Он называет (конечно) do_something<char[7]>()
. Как заставить это позвонить do_something<my_string>
без, явно указывая тип (т. Е. Напишите do_something("abcdef")
, а не do_something<my_string>("abcdef")
)?
Примечание: хотя это всего лишь пример, никогда не выводятся из std :: string! –
Я бы просто добавил перегрузку для 'const char []' и перешел к функции, которую вы хотите вызвать. – NathanOliver
Буквенный суффикс строки может помочь в качестве альтернативы: '' abcdef 's' и 'operator'" _my_s' '" abcdef "_my_s'. – Jarod42