为什么`std :: all_of`不使用`std :: invoke`?

问题描述 投票:0回答:1

[在类似的问题(例如here)中指出,您不能将类方法指针作为std::all_of的谓词传递。

但是,对于C ++ 17,我们有std::invoke,这应该使std::all_of和类似的函数更容易接受成员函数(甚至成员变量)指针。

更具体地说,以下内容无法在GCC 9.2上编译:

#include <algorithm>
#include <vector>

struct S {
    bool check() const { return true; }
};

int main() {
    std::vector<S> vs;
    std::all_of(vs.begin(), vs.end(), &S::check);
}

Godbolt link包含一些示例代码和使用invoke的玩具版本的all_of

为什么要设置此限制?我想念什么吗?我以为std::invoke标准化后,它也应该应用于适当的STL函数。

c++ stl c++17
1个回答
2
投票

原因1:从未有人提出过。

© www.soinside.com 2019 - 2024. All rights reserved.