Так что если у меня есть что-то вроде этогоПерегрузки выход << оператор класса для печати кортежа внутри
template<typename... Args >
class tuple_class
{
public:
std::tuple<Args...> tup;
/*I left out the other functions */
};
Я хочу, чтобы перегрузить оператор < < так, что он будет рекурсивно печатать кортеж при вызове на класс.
ex.
auto a = tuple_class(1, 2 ,3);
std::cout << a << endl;
можно надеяться напечатать «123»
Ive видели другие примеры кортежей принтеров, но я не могу применить его к моему классу, не имея кучу неприятностей
Я думаю, что я должен начать с функция-член как этот
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;
}
Это действительно сработало, когда я вызываю оператор < < на мой класс. Но я понятия не имею, как заставить его на самом деле распечатать кортеж.
Любая помощь будет оценена
Вам необходимо рекурсивно развернуть вариационный шаблон с помощью частичной специализации. См. [Этот вопрос] (http://stackoverflow.com/questions/7124969/recursive-variadic-template-to-print-out-the-contents-of-a-parameter-pack). – denniskb