ligação estruturada com [[maybe_unused]]
Linguagens funcionais com correspondência de padrões (às vezes?) Têm a possibilidade de ignorar alguns valores vinculados, mas com ligações estruturadas C ++ 17 parece não haver maneira de fazer isso (std :: ignore com ligações estruturadas?) O conselho é usar um nome fictício, mas receberemos avisos sobre variáveis não utilizadas.
Com os mais recentes chefes do clang e do gcc, isso faz o esperado, o que é bom e útil,
[[maybe_unused]] auto x =4 ; // fine, no warning
[[maybe_unused]] auto [a,dummyb,dummyc] = std::tuple<int,int,float>(1,1,1.0f);
mas eu também esperava que isso funcionasse:
auto [g,[[maybe_unused]]dummyh,[[maybe_unused]]dymmyi] =
std::tuple<int,int,float>(1,1,1.0f);
existe uma razão específicaatributos não pode ser usado aqui? (no padrão e também tecnicamente). Nem o gcc nem o clang aceitam isso.
Edite, coletando o status do suporte: (graças agodbolt / compilador explorador) Funciona como esperado em (também poderia ser anterior):
tronco do gcc 8.0 (g ++ 8.0.0 20171015 experimental)clang 4.0.0icc 18 (não testado, de acordo comespecificações)MSVC 17.3.5 (e a GUI do Visual Studio),permite o atributo, mas ele não funciona com ligações estruturadas.relatório de erro