Итак, я перегрузил оператор ostream <<, чтобы он мог взять большинство контейнеров STL и распечатать их.Однако это не работает для передачи строк (ошибка - «неоднозначная перегрузка» для строки «cout << s;»).Как мне сделать так, чтобы он работал на строках <strong>, как если бы он не был перегружен ?
#include <bits/stdc++.h>
using namespace std;
template<typename T>
ostream& _containerprint(ostream &out, T const &val) {
return (out << val << " ");
}
template<typename T1, typename T2>
ostream& _containerprint(ostream &out, pair<T1, T2> const &val) {
return (out << "{" << val.first << " " << val.second << "} ");
}
template<template<typename, typename...> class TT, typename... Args>
ostream& operator<<(ostream &out, TT<Args...> const &cont) {
for(auto&& elem : cont) {
_containerprint(out, elem);
}
return out;
}
int main() {
string s = "help me";
cout << s;
}
Редактировать: пожалуйста, перестаньте волноваться, #include <bits/stdc++.h>
потому что это для программированияпостановка конкурса;это действительно не имеет значения!