【发布时间】:2017-01-20 09:40:23
【问题描述】:
我有一张针对特定选择要采取的行动的地图,
struct option {
int num;
std::string txt;
std::function<void(void)> action;
};
void funct_with_params(int &a, int &b)
{
a = 3; b = 4;
}
int param1 = 1;
int param2 = 3;
我想以新的初始化列表方式初始化那些向量:
const std::vector<option> choices
{
{
1,
"sometext",
std::bind(&funct_with_params, std::ref(param1), std::ref(param2))
},
}
我无法在向量中进行初始化以使函数工作,是否有以某种方式将std::bind 传递给向量的方法?
我能够通过使用 lambda 表达式而不是绑定来使示例工作,我缺少什么吗?或者这不是std::bind的正确使用方式?
我正在使用 C++11,因为我无法迁移到更新的标准。
【问题讨论】:
-
我can't reproduce your problem。你得到了什么错误?你想做什么?
-
我猜
act_with_params实际上是funct_with_params,但是您是如何以及在哪里声明param1和param2的?请提供minimal reproducible example。 -
哪个编译器?
-
我正在使用clang,我认为这可能是编译器问题。
-
C++ 的第一年,你责怪 CPU 搞砸了。第二年,你责怪编译器的错误。第三年,是标准库。只有在第四年之后,您才开始怀疑您的代码以某种方式出错。
标签: c++ c++11 initializer-list stdbind reference-wrapper