Я какое-то время разбирался со stackoverflow, но либо я недостаточно разбираюсь в шаблонах, чтобы найти решение, либо на него просто не было ответа раньше.
В этом примере:
template <typename T> T f();
Можно ли заставить функцию требовать, чтобы тип T был специализацией шаблона std::basic_string
?
Я мог бы иметь шаблон, определенный с T как тип std::basic_string
так же (используя std::basic_string<T>
внутренне, конечно):
template <typename T> std::basic_string<T> f();
Но тогда я не смог бы передать std::string
или std::wstring
в функцию (ожидая, что возвращаемый тип будет std::string
и std::wstring
, соответственно), что является настоящей целью (чтобы можно было передавать любой тип, производный от шаблона std::basic_string
).