std::ignore
может работать, но он предназначен для использования с кортежами. Итак, вам нужно включить заголовок кортежа и кто знает, какие операции выполняются для назначения. Это также может сломаться в другой версии C ++, потому что никогда не было задокументировано для использования таким образом.
Лучше всего для этого использовать атрибут C ++ 17 [[maybe_unused]]
void func([[maybe_unused]] int i)
{
}
Он помещает объявление прямо в объявление переменной, поэтому вам не нужно объявлять его в дополнительной строке / операторе.
То же самое можно использовать для локальных (и локально-статических) переменных.
...
[[maybe_unused]] static int a = something();
...
А также для многих других:
Появляется в объявлении класса, typedef, переменной, нестатического члена данных, функции, перечисления или перечислителя. Если компилятор выдает предупреждения о неиспользуемых объектах, это предупреждение подавляется для любого объекта, объявленного Maybe_unused.
См. http://en.cppreference.com/w/cpp/language/attributes.
Что касается людей, заинтересованных в том, что вы все еще можете использовать переменные после того, как объявите их неиспользуемыми:
Да, это возможно, но (по крайней мере, с помощью clang) вы получите предупреждения в случае использования maybe_unused
объявленных переменных.
person
Hayt
schedule
28.09.2016
(void)i;
, чтобы подавить предупреждение в коде до C ++ 17. - person Sam   schedule 03.10.2016