Więc jeśli mam coś takiegowyjście Przeciążenie operator << dla klasy wydrukować krotki środku
template<typename... Args >
class tuple_class
{
public:
std::tuple<Args...> tup;
/*I left out the other functions */
};
chcę przeciążać operatora < < tak, że będzie rekurencyjnie wydrukować krotki po wezwaniu klasa.
np.
auto a = tuple_class(1, 2 ,3);
std::cout << a << endl;
miejmy nadzieję wydrukować „123”
Widziałem inne przykłady drukarek krotka ale nie może zastosować go do mojej klasy, bez konieczności pęczek kłopoty
Chyba powinienem zacząć funkcję jak element ten
template<typename... Args>
friend std::ostream& operator<<(std::ostream& os, const my_tuple<Args...> &m);
i następnie rzeczywistej funkcji poza klasy
template<typename... Args>
std::ostream& operator<<(std::ostream& os, const my_tuple<Args...> &m)
{
os << "SOMETHING" << std::endl;
return os;
}
To zadziałało, gdy zadzwonię do operatora < < na mojej klasie. Ale nie mam pojęcia, jak sprawić, by faktycznie wydrukował krotkę.
Każda pomoc będzie mile widziane
Musisz rekurencyjnie rozwinąć szablon variadic poprzez częściową specjalizację. Zobacz [to pytanie] (http://stackoverflow.com/questions/7124969/recursive-variadic-template-to-print-out-the-contents-of-a-parameter-pack). – denniskb