При чтении this резюме C++ 17 конечных функций, я был немного удивлен разделе о структурированных привязок (курсив мой):Структурированные связывание заменить брани станд :: TIE
структурированные привязок
До сих пор существовал известный трюк, чтобы злоупотреблять std :: tie, чтобы напрямую назначать кортеж или пару различным переменным, вместо того чтобы иметь дело с типом результата вручную. Это был взлом, а также переменные должны были существовать, теперь вы можете объявить переменные и инициализировать их в одной строке:
auto [a, b, c] = getvalues ();
Скобки необходимы, getvalues возвращает кортеж. std :: pair не упоминается в предложении, поэтому неясно, работает ли это с парой, которая возвращается STL в некоторых методах вставки.
Я предполагаю, что они относятся к этому виду использования std::bind
int a,b,c;
std::tie(a,b,c) = std::make_tuple(1,2,3);
, который я считал, что рекомендуется.
Может ли кто-нибудь дать объяснение, почему они ссылаются на приведенный выше пример в качестве взлома?
Заключительные запятые в этом цитируемом тексте невыносимы! –