[[maybe_unused]]
中的全部要点是,它告诉编译器不要警告未使用的变量,对吗?那么,为什么GCC在这里警告ui
未使用?
#include <iostream>
#include <vector>
#define NDEBUG
#include <cassert>
int main()
{
std::vector<int> numbers = {1,2,3};
if ([[maybe_unused]] auto ui = static_cast<unsigned int>(numbers.size()))
{
assert(ui);
std::cout << "ok" << std::endl;
}
}
我做错什么了吗?这是编译器中的错误吗?
(顺便说一句:在Wandbox上尝试此操作,Clang似乎没有警告ui
未使用,无论是否存在[[maybe_unused]]
)。
(此外:即使没有ui
,MSVC也不会警告[[maybe_unused]]
未使用)。