C++17引入了[[nodiscard]]属性
当用于描述函数的返回值时,如果调用函数的地方没有获取返回值时,编译器会给予警告
当用于描述类或枚举类时,如果函数的返回值是该类或枚举类的对象时(引用或指针不可以),如果该返回值没有被获取,编译器给予警告。
[[nodiscard]] int fi() //修饰函数返回值
{
return 1;
}
class [[nodiscard]] C{}; //修饰类
enum class [[nodiscard]] E{e1, e2}; //修饰枚举类
C fc()
{
return C();
}
E fe()
{
return E::e1;
}
int main()
{
fi(); //没有使用fi的返回值,告警:ignoring return value of 'int fi()', declared with attribute nodiscard
fc(); //没有使用fc的返回值,告警:ignoring returned value of type 'C', declared with attribute nodiscard
fe(); //没有使用fe的返回值,告警:ignoring returned value of type 'E', declared with attribute nodiscard
return 0;
}