Я использую глупость области видимости охранника, он работает, но выдает предупреждение о том, что переменная не используется:Как избежать предупреждения при использовании защиты области?
warning: unused variable ‘g’ [-Wunused-variable]
Код:
folly::ScopeGuard g = folly::makeGuard([&] {close(sock);});
Как избежать такого предупреждения?
Я думаю, что вы не должны использовать 'folly :: ScopeGuard g = folly :: makeGuard ([&] {close (sock);});'. Вы должны использовать 'SCOPE_EXIT {close (sock);}'. Посмотрите, исчезнет ли это предупреждение. Если это не так, возможно, есть способ взломать использование в определении. – nwp
Какая версия компилятора? Если деструктор 'g' на самом деле что-то делает, компилятор не должен предупреждать об этом, его можно считать ошибкой (и, возможно, исправлены в более поздних версиях). –
Следует отметить, что C++ 17, похоже, получает атрибут '[[maybe_unused]]', который предоставит стандартно гарантированный способ объявления о том, что переменная будет запущена. –