【发布时间】:2016-09-12 16:51:43
【问题描述】:
所以如果我有这样的事情
template<typename... Args >
class tuple_class
{
public:
std::tuple<Args...> tup;
/*I left out the other functions */
};
我想重载运算符
例如
auto a = tuple_class(1, 2 ,3);
std::cout << a << endl;
希望打印 '123'
我看过其他元组打印机的例子,但我无法将它应用到我的课堂上而不会遇到很多麻烦
我想我应该从这样的成员函数开始
template<typename... Args>
friend std::ostream& operator<<(std::ostream& os, const my_tuple<Args...> &m);
然后是类外的实际函数
template<typename... Args>
std::ostream& operator<<(std::ostream& os, const my_tuple<Args...> &m)
{
os << "SOMETHING" << std::endl;
return os;
}
当我在课堂上调用
任何帮助将不胜感激
【问题讨论】:
-
您需要通过部分特化递归展开可变参数模板。见this question。
标签: c++ operator-overloading tuples iostream