Здравствуйте, niXman, Вы писали:
X>Здравствуйте, _NN_, Вы писали:
_NN>>Хотелось бы иметь возможность раскрыть tuple по месту без дополнительной функции.
X>поясни.
R>Оно?
Оно если бы компилятор умел из tup... делать get<0>(tup), get<1>(tup)...
А так не будет собираться, ведь я передаю один аргумент Tuple<Types...>.
Fold expressions работают с parameter pack. tuple — это не parameter pack, соответственно fold expressions не с чем работать, и в текущих реалиях C++ придётся привлечь дополнительную функцию для "раскрытия" tuple.
_NN>Вместо _NN>
Здравствуйте, _NN_, Вы писали:
_NN>Оно если бы компилятор умел из tup... делать get<0>(tup), get<1>(tup)... _NN>А так не будет собираться, ведь я передаю один аргумент Tuple<Types...>.
Как ни крути, где-то должен возникнуть контескт, в котором будет последовательность компайл тайм-индексов. И у тебя есть ровно две возможности: либо создать этот контескт самостоятельно (написать ту самую вспомогательную функцию), либо воспользоваться тем, что уже есть (apply). Вру, есть еще третья возмозность — использовать для доступа к элементам тупла типы вместо индексов. Но нормально работать это будет только в том случае, когда в тупле все типы разные.
--
Не можешь достичь желаемого — пожелай достигнутого.
Здравствуйте, ViTech, Вы писали:
_NN>>Хочется что-то вроде: _NN>>
(pack(tup...), ...)
VT>Кстати, если среди элементов tup будут другие tuple(а в них ещё tuple и ещё и т.д.), они тоже должны раскрываться или обрабатываться в pack целиком?
Ну это уже зависит от устройства pack. Предоставив всего лишь одну перегрузку, иожно заставить вложенные туплы раскрываться в деревья.
--
Не можешь достичь желаемого — пожелай достигнутого.
Re[6]: Выражения свёртки без дополнительной функции
Здравствуйте, rg45, Вы писали:
R>Как ни крути, где-то должен возникнуть контескт, в котором будет последовательность компайл тайм-индексов. И у тебя есть ровно две возможности: либо создать этот контескт самостоятельно (написать ту самую вспомогательную функцию), либо воспользоваться тем, что уже есть (apply). Вру, есть еще третья возмозность — использовать для доступа к элементам тупла типы вместо индексов. Но нормально работать это будет только в том случае, когда в тупле все типы разные.
Или добавить в язык возможность распаковки типов вроде tuple.
Выражение вроде "...a" раскрывать в: