【发布时间】:2019-07-31 00:29:39
【问题描述】:
[[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]] 是否存在)。
(此外:MSVC 也不会警告 ui 未使用,即使 [[maybe_unused]] 不存在)。
【问题讨论】:
标签: c++ gcc c++17 gcc-warning