我试图定义一个toString帮助器方法,它应该通过使用&lt;&lt;操作员(如果可用),或使用范围循环打印容器。我认为C ++ 11和模板魔法只是想弄清楚要使用什么,而是我得到错误&#34;重新定义&#39; toString&#39;&#34;。< / p>
/** to string via o<<value operations */
template<class T>
inline static std::string toString(const T& value) {
return (std::stringstream() << value).str();
}
/** to string via for each and tostring */
template<class T>
inline static std::string toString(const T& container) {
std::stringstream stream;
std::string delim = "";
stream << "{";
for (const auto& element : container) {
stream << delim << toString(element);
delim = ",";
}
stream << "}";
return stream.str();
}
我想这些定义必须以某种方式分开。可以将第二个模板专门化为矢量,这是有效的,但它只适用于矢量。所以我试图找到一种方法来实现traits和enable_if,首先我无法弄清楚,其次,似乎并不是支持范围循环的特性。或者&#39;支持&lt;&lt;操作员&#39;