问题
我应该对未使用的类* tors使用[[maybe_unused]]
attribute吗?
示例
让我们考虑以下示例:
public: struct keyData{
public: [[maybe_unused]] keyData(){};
public: keyData(::std::chrono::steady_clock::time_point timestamp)
: lastMod(timestamp)
{};
protected: ::std::chrono::steady_clock::time_point lastMod = ::std::chrono::steady_clock::now();
};
我想使用缓存的time_point
时间戳初始化多个keyData
。但是,我还提供无参数构造函数,在keyData
中,将lastMod
设置为now()
,因为未提供时间戳。
我是否应该使用public: keyData(){};
参数标记未使用的[[maybe_unused]]
,如示例代码中所示?
研究
对Standard attributes网站的 [[maybe_unused]]
说明(粗体是我的):
出现在类的声明,typedef,变量,非静态数据成员,函数,枚举或枚举器中。如果编译器对未使用的实体发出警告,则对于声明为maybe_unused的任何实体都会禁止该警告。
Constructors and member initializer lists 网站上说(粗体是我的):
构造函数是一个特殊的非静态成员函数,用于初始化其类类型的对象。
Destructors 网站上说(粗体是我的):
析构函数是特殊成员函数,在对象的生命周期结束时调用。
operator overloading 网站上说(粗体是我的):
重载运算符是具有特殊函数名称的函数。
所以,如果我理解得很好,* tors就是函数,作为函数,它们可以标记为[[maybe_unused]]
,不是吗?
答案 0 :(得分:4)
我应该在未使用的类* tors上使用[[maybe_unused]]属性吗?
[[maybe_unused]]
的目的是防止可能警告合格项目未被使用的编译器发出警告。您的编译器是否警告未使用的构造函数?如果是这样,那么你应该用它来抑制那个警告。
但是,由于大多数编制者都不会对废弃的功能发出警告,因此最好不要打扰。该属性只会占用空间。
除非您将图书馆宣传为-Wunused-member-function
干净,否则对于所有相关人员来说,最好不要压制此警告。毕竟,想要使用该警告的用户实际上希望警告存在。不使用警告的用户不需要[[maybe_unused]]
随意撒上。