#include <iostream>
#include <vector>
#include <functional>
struct Callable {
void operator()() {
std::cout << "hello world\n";
}
};
std::vector<std::function<void()>> cbs;
void register(std::function<void()>&& cb) { // <-- ERROR
cbs.emplace_back(std::move(cb));
}
int main() {
Callable c;
register(std::bind(std::ref(c)));
for (auto& cb : cbs) {
cb();
}
return 0;
}在上面的C++代码片段中,g++-9在注释行上以error: invalid declarator before 'cb'的形式报告错误。
为什么会出现这个错误?它意味着什么,以及如何修复它?
发布于 2020-12-04 01:12:56
错误消息并不能真正帮助发现问题,但实际上编译器可以说的也不多了。问题是register是一个保留标识符。只需更改该函数的名称,您的代码就可以正常工作。
https://stackoverflow.com/questions/65130729
复制相似问题