Ответ 1
Предложение структурированных привязок содержит выделенный раздел, отвечая на ваш вопрос (P0144R2):
3.8 Должен ли быть способ явно игнорировать компоненты?
Мотивация заключается в том, чтобы отключить предупреждения компилятора о неиспользуемых именах. Мы считаем, что ответ должен быть "еще нет". Это не мотивировано случаями использования (предупреждение о запрете компилятора является мотивацией, но оно не является самоцелью как таковым), и лучше всего оставить его до тех пор, пока мы не сможем вернуться к нему в контексте более общего предложения, соответствующего шаблону, в котором это должно выпасть как частный случай.
Симметрия с
std::tie
предложила бы использовать что-то вродеstd::ignore
:tuple<T1,T2,T3> f(); auto [x, std::ignore, z] = f(); // NOT proposed: ignore second element
Однако это неудобно.
Предваряющее сопоставление шаблонов на языке может предлагать подстановочный знак, например
_
или*
, но поскольку у нас пока нет соответствия шаблонов, преждевременно выбирать синтаксис, который, как мы знаем, будет совместимым. Это чистое расширение, которое может подождать, чтобы его рассматривали с помощью сопоставления с образцом.
Однако обратите внимание, что рабочий проект стандарта в настоящее время пересматривается соответствующими национальными органами (NB), и есть комментарий NB, запрашивающий эту функцию (P0488R0, US100):
Объявления разложения должны содержать синтаксис для отказа от некоторых возвращаемых значений, так же как
std::tie
используетstd::ignore
.