cbs; void regi-6ren">
gpt4 book ai didi

c++ - 为什么 g++ 在将可调用对象作为参数传递时提示 "invalid declarator before"?

转载 作者:行者123 更新时间:2023-12-02 16:23:05 26 4
gpt4 key购买 nike

#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' on the line commented。

为什么会出现此错误?这是什么意思,如何解决?

最佳答案

错误消息并不能真正帮助发现问题,但实际上编译器也无能为力。问题是 register 是一个保留标识符。只需更改该函数的名称,您的代码即可运行。

关于c++ - 为什么 g++ 在将可调用对象作为参数传递时提示 "invalid declarator before"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65130729/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com