Есть ли менее подробный способ инициализировать кортеж разнородных кортежей (или типов с аналогичным шаблоном) ⇐ C++
Есть ли менее подробный способ инициализировать кортеж разнородных кортежей (или типов с аналогичным шаблоном)
Я хочу создать кортеж из разнородных кортежей, но для этого, похоже, требуется явный вызов конструктора для каждого члена:
auto foo = std::tuple{ std::tuple{1, "foo", 3}, станд::кортеж{1, 2, 3}, станд::кортеж{1.0, 2.0}, // еще много вызовов конструктора CTAD } По сути, я спрашиваю, может ли вспомогательная функция и т. д. сделать это похожим на приведенный ниже пример с однородными внутренними типами, где внутренний конструктор не нужно вызывать каждый раз.
auto bar = std::vector{ {1, "фу", 3}, {4, "бар", 6}, {1, "баз", 3}, // ... }; Надеюсь, у меня получится что-то вроде этого:
auto baz = make_tuple_of_tuples( {1, "фу", 3}, {1, 2, 3}, {1.0, 2.0}, // ... ); Если это невозможно с std::tuple, то как насчет пользовательского типа, где мы контролируем конструкторы и направляющие вывода?
Я хочу создать кортеж из разнородных кортежей, но для этого, похоже, требуется явный вызов конструктора для каждого члена:
auto foo = std::tuple{ std::tuple{1, "foo", 3}, станд::кортеж{1, 2, 3}, станд::кортеж{1.0, 2.0}, // еще много вызовов конструктора CTAD } По сути, я спрашиваю, может ли вспомогательная функция и т. д. сделать это похожим на приведенный ниже пример с однородными внутренними типами, где внутренний конструктор не нужно вызывать каждый раз.
auto bar = std::vector{ {1, "фу", 3}, {4, "бар", 6}, {1, "баз", 3}, // ... }; Надеюсь, у меня получится что-то вроде этого:
auto baz = make_tuple_of_tuples( {1, "фу", 3}, {1, 2, 3}, {1.0, 2.0}, // ... ); Если это невозможно с std::tuple, то как насчет пользовательского типа, где мы контролируем конструкторы и направляющие вывода?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение