패턴 매칭 기능성 언어 (때로는?)는 일부 바운드 값을 무시할 가능성이 있지만 C++ 17 구조화 바인딩을 사용하면 그럴 수없는 것 같습니다 (std::ignore with structured bindings?). 충고는 더미 이름을 사용하는 것이지만, 사용되지 않는 변수에 대한 경고를 얻습니다. 그 소리와 GCC 모두의 최신 헤드[[maybe_unused]]와 구조화 된 바인딩
이 있지만 나는 또한 기대했을 것이다 좋은 유용 예상되는 것은,
[[maybe_unused]] auto x =4 ; // fine, no warning
[[maybe_unused]] auto [a,dummyb,dummyc] = std::tuple<int,int,float>(1,1,1.0f);
이 작동합니다 않습니다
auto [g,[[maybe_unused]]dummyh,[[maybe_unused]]dymmyi] =
std::tuple<int,int,float>(1,1,1.0f);
구체적인 이유는 여기에 attributes 사용할 수 없습니까? (기술적으로뿐만 아니라 표준에서도). gcc 나 clang도이를 허용하지 않습니다.
편집, 지원 상태 수집 : (godbolt/compiler explorer에게 감사). 그것은 (이전에도 수) 기대 작품과 같이
- GCC 8.0 트렁크 (실험 g ++ 8.0.0 20171015)
- 그 소리 4.0.0
- ICC (18) (테스트하지, specs에 따라)
은이지만 구조화 된 바인딩에서는 작동하지 않습니다. 구조 바인딩 논문에서 bug report
중첩 된 분해를 잠재적으로 차단하는 것이 걱정되었을 수 있다고 상상합니다. –
흠. 좋아 .' [g, [[아마도 _unused]]] = foo()'.. 더 많이 생각할수록, 그 하나의 속성을 외부에 두는 것만으로도 괜찮습니다 :-) –
문제는 당신입니다. 어떤 변수가 사용되지 않았는지 알 수 없지만 외부에있는 경우 – serine