Custom deduction guide для std::классов
Изучаю вопрос о custom deduction guides. Вижу примеры, в которых его применяют для своих классов:
template <typename T>
struct S {
T data;
S(T x) : data(x) {}
};
S(const char*) -> S<std::string>;
S s("abc"); //decltype(s.data) - std::string
Когда пробую провернуть такое для библиотечных типов, не выходит:
std::vector(const char*) -> std::vector<std::string>
Компилятор говорит:
‘std::vector(const char*)-> std::vector >’ should have been declared inside ‘std’
Можно ли это обойти какими-нибудь шаблонными трюками?
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Например, такое читерство — формально запрещенное (добавлять что-то к пространству имен std запрещено (или категорически не рекомендуется, точно не помню...)):
namespace std {
vector(const char*) -> vector<string>;
}