如何解决如何让operator <<用于特定的模板实例std :: tuple <double,int,int>?
如何为特定的operator<<
模板实例创建std::tuple<double,int,int>
?
using FST = std::tuple<double,int>;
std::string TupleAsStr(const FST & i) {
return "(" +
std::to_string(std::get<0>(i)) + "," +
std::to_string(std::get<1>(i)) + "," +
std::to_string(std::get<2>(i)) +
")";
}
// what I have
FST const& fst = std::make_tuple(1.0,4,5);
std::cout << TupleAsStr(fst) << std::endl;
// what I want
std::cout << fst << std::endl;
仅针对此特定情况,我不需要针对N类型的通用解决方案。
解决方法
您可以将operator<<
类型的FST
重载。另外,最好也将FST
类型放入命名空间,以免与现有的重载冲突:
namespace my {
using FST = std::tuple<double,int,int>;
std::ostream& operator<<(std::ostream &out,const my::FST & i) {
return out << "(" <<
std::to_string(std::get<0>(i)) << "," <<
std::to_string(std::get<1>(i)) << "," <<
std::to_string(std::get<2>(i)) <<
")";
}
}
然后在要使用它时执行using my::operator<<
。
这里是demo。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。