22 April 2022

C++ 核心指南目录

F.9: Unused parameters should be unnamed

理由

更好的可读性。免除“参数未被使用”的警告。

例子

// once upon a time, a hint was used
X* find(map<Blob>& m, const string& s, Hint);

例子

void print_params(const int i, const string& s, double) {
    cout << i << " " << s << endl;
}

int main()
{
    print_params(10, "hello", 1.1);
    return 0;
}
10 hello

注意

允许不命名没使用的参数是在 1980 年代早期引入标准的。为的是解决接口兼容性问题。

但是,如果函数在某些条件下才会用到某个参数的话,可以把这个参数声明成 [[maybe_unused]] 属性。

template <typename Value>
Value* find(const set<Value>& s, const Value& v, [[maybe_unused]] Hint h)
{
    if constexpr (sizeof(Value) > CacheSize)
    {
        // a hint is used only if Value is of a certain size
    }
}

强化

  • 标记出有名称但是没有用到的参数