경고가 필요 없으며, 그 중 하나가 -Wdangling-else입니다.if와 매크로가 매달려 있습니다.
#define FOR_EACH_REF(var, container) \
if(bool _cont = true) \
for(our::remove_reference<decltype(container)>::type::iterator _it = (container).begin(); _it != (container).end() && _cont; ++_it) \
if((_cont = false)) {} else \
for(our::remove_reference<decltype(container)>::type::value_type& var = *_it; !_cont; _cont = true)
내가 인정해야, 난 정말이 매크로로하지 않으며, 따라서이 경고를 해결하는 방법을 알고하지 않습니다 : 그것은 다음과 같은 매크로 정의 내부의 경우 매달려 말한다.
다른 사람이 매달리는 것을 피하는 방법에 대한 설명이 도움이 될 수 있습니까?
' #define FOR_EACH_REF (var, container) for (auto & var : container)'? – Jarod42
@ Jarod42 jepp, 그게 포인트, 아니 자동 변수와 새로운 것들, 오래된 컴파일러 지원이 필요합니다. –
@OliverFriedrich'auto'는'decltype'만큼 오래되었습니다 ... – Steve