Це продовження мого попереднього запитання щодо досить друкованих контейнерів STL , для якого нам вдалося розробити дуже елегантне та повністю загальне рішення.
На цьому наступному кроці я хотів би включити досить друк для std::tuple<Args...>
використання різноманітних шаблонів (отже, це суворо C ++ 11). Бо std::pair<S,T>
я просто кажу
std::ostream & operator<<(std::ostream & o, const std::pair<S,T> & p)
{
return o << "(" << p.first << ", " << p.second << ")";
}
Яка аналогічна конструкція для друку кортежу?
Я пробував різні біти розпакування стеку аргументів шаблону, передаючи індекси та використовуючи SFINAE для виявлення, коли я перебуваю в останньому елементі, але безуспішно. Я не буду обтяжувати вас своїм непрацюючим кодом; опис проблеми, сподіваємось, досить прямий. По суті, я хотів би мати таку поведінку:
auto a = std::make_tuple(5, "Hello", -0.1);
std::cout << a << std::endl; // prints: (5, "Hello", -0.1)
Бонусні бали за включення того самого рівня загальності (char / wchar_t, роздільники пари), що і попереднє питання!