使用 std::ignore
忽略未使用的变量是一种好方法吗?
假设我有这样的功能:
void func(int i)
{
//for some reason, I don't need i anymore but I cannot change signature of function
std::ignore = i;
}
附加信息
这是一个例子,一些答案建议使用 匿名 变量。但是对于其他情况,我该怎么做,例如:
int Thread_UnSafe_func_returnSomething():
void func()
{
// To make it thread safe
// Also it is required to call only once
static int i = Thread_UnSafe_func_returnSomething();
std::ignore = i;
}
原文由 gaurav bharadwaj 发布,翻译遵循 CC BY-SA 4.0 许可协议
std::ignore
可能有效,但它旨在用于元组。因此,您需要包含元组标头以及谁知道为分配完成了哪些操作。这也可能会在另一个 c++ 版本中中断,因为它从未被记录为以这种方式使用。一个更好的方法是 C++17 属性
[[maybe_unused]]
它将声明放在变量声明中,因此您不必在额外的行/语句中声明它。
同样可以用于局部(和局部静态)变量
还有更多:
请参阅 http://en.cppreference.com/w/cpp/language/attributes
至于那些声明变量未使用后仍然可以使用的人:
是的,这是可能的,但是(至少使用 clang)如果您使用
maybe_unused
声明的变量,您会收到警告。