我有一个名称空间,通过我的申请,加上相关的印刷声明,创造了一系列的词汇。
namespace NS {
enum EnumA { A1, A2, A3 };
enum EnumB { B1, B2, B3 };
inline std::string toString(const EnumA key) {
switch(key) {
case A1: return "A1";
case A2: return "A2";
case A3: return "A3";
}
return "UNKNOWN";
}
// .. same for EnumB
}
// this is the part I would like to templatize
inline std::ostream& operator<<(std::ostream& s, const NS::EnumA key) {
s << NS::toString(key);
return s;
}
inline std::ostream& operator<<(std::ostream& s, const NS::EnumB key) {
s << NS::toString(key);
return s;
}
有可能使下游经营者与任何<代码>NS合作 我只得这样说? 和:
template <typename T>
inline std::ostream& operator<<(std::ostream& s, const NS::<T> key) {
s << NS::toString(key);
return s;
}