Здравствуйте, c-smile, Вы писали:
CS>Может как-то так гуманнее?
CS>#define $get(TT,I) std::get<I>(TT)
сильно отличается от синтаксиса в первом сообщении, да и длиннее на 5 символов.
CS>#define $length(TT) std::tuple_size<decltype(TT)>::value
согласен, про decltype для это цели я уже потом подумал.
P.S. А вообще меня и обычный синтаксис не напрягает. Тем более tuple не так часто нужны.
Например, если это тип возврата функции (тем более не лямбды) — то тут не трудно и обычную структуру объявить. Названия полей будут служить документацией, да и вызывающий код будет выглядеть понятней: res.some_meaningful_name vs res.first/get<0>(res). Тем более при наличии uniform initialization (а в C++98 — aggregate initialization)
Другое дело если результат это действительно набор безликих полей, либо типы полей результат CT-вычислений.
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>P.S. А вообще меня и обычный синтаксис не напрягает. Тем более tuple не так часто нужны. EP>Например, если это тип возврата функции (тем более не лямбды) — то тут не трудно и обычную структуру объявить. Названия полей будут служить документацией, да и вызывающий код будет выглядеть понятней: res.some_meaningful_name vs res.first/get<0>(res). Тем более при наличии uniform initialization (а в C++98 — aggregate initialization) EP>Другое дело если результат это действительно набор безликих полей, либо типы полей результат CT-вычислений.
+1
Туплы длиной больше 3 неюзабельны, если это только не в сгенеренном коде, в который люди не смотрят (или не видят, в случае подкапотной обработки вариадиков и т.п.)
Здравствуйте, jazzer, Вы писали:
J>Не пойму, чем не устраивают обычные туплы, конкретно tie?
ну да, tie() — наименьшая из проблем. довольно лаконично записывается.
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)