要将对象写入命令行(或其他输出流),可以重载<<
运算符。但是有没有可能为模板实现这一点?假设我有以下内容:
template <typename identifier>
class SomeTemplate {
public:
SomeTemplate();
~SomeTemplate();
void addElement(identifier id, unsigned int elem);
unsigend int getElement(identifier id);
private:
std::map<identifier, unsigned int> data_map_;
};
当我现在使用例如类型标识符对类进行专门化时,std::tuple<unsigned int, unsigned int, unsigned int>
函数getElement(identifier id)
应该执行一致性检查并写入警告std::cout
,以防请求的元素不存在于data_map_
. 简单地将 id 传递给 cout 是行不通的,因为<<
用于特化的类型可能没有重载运算符。还有其他可能实现这一目标吗?也许标识符必须实现一个纯虚拟类,该类强制所有标识符重载<<
运算符。但这可能吗?
谢谢你的帮助。
问候