std :: кортеж константных ссылок? - PullRequest
0 голосов
/ 08 января 2012

У меня была функция, которая раньше называлась

void func(const A& v0, const A& v1, const A& v2);

Для ясности я хотел бы передать аргументы в виде 3-х кортежей. Как правильно избежать лишних накладных расходов? Будет ли следующее наиболее эффективным?

void func(std::tuple<const A&> v);

1 Ответ

0 голосов
/ 09 января 2012

Если они не полиморфны и часто используются (и, я полагаю, созданы) вместе, то почему бы вам просто не упаковать их в кортеж значения, std::tuple<A, A, A> или именованную структуру. Вы бы раздали его по константной ссылке. Это решение не снижает производительность и, по сути, может быть быстрее.

На самом деле, поскольку все три элемента имеют одинаковый тип, почему бы вам не использовать массив из трех элементов, A[3]? Кортежи лучше всего подходят для разнородных типов.

...