我可以将 boost::bind() 与 mem_fun_ref() 一起使用吗?
Can I use boost::bind() with mem_fun_ref()?
我的问题很简单:我可以做这样的事情吗?
假设类 foo 包含以下成员函数:
foo foo::DoSomething(input_type1 input1, input_type2 input2)
{
... // Adjust private datamembers
return *this;
}
使用 foo:
std::vector<foo> foovec;
input_type1 in1;
input_type2 in2;
...
std::transform(foovec.begin(), foovec.end(), foovec.begin(), std::mem_fun_ref(boost::bind(&foo::DoSomething, in1, in2)));
那么这可能吗?问题几乎在于boost::bind()
是否对其所处理函数的成员/非成员性质有影响。我认为我不能像这样
std::transform(foovec.begin(), foovec.end(), foovec.begin(), boost::bind(std::mem_fun_ref(&foo::DoSomething), _1, in1, in2)));
因为std::mem_fun_ref()
采用一元或零函数,而DoSomething()
是二进制的。
你不需要std::mem_fun_ref
,只需使用:
std::transform(foovec.begin(),
foovec.end(),
foovec.begin(),
boost::bind(&foo::DoSomething, _1, in1, in2));
或者你可以boost::bind
用
std::bind(&foo::DoSomething, std::placeholders::_1, in1, in2)
相关文章:
- 对RValue对象调用的LValue ref限定成员函数
- 将Ref对象作为类成员
- 如何将enable-if与模板参数和参数包一起使用
- 如何将PERF_AMPLE_READ与mmap一起使用
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 如何将C++中的库和头与MinGW一起使用
- 将--whole archive链接器选项与CMake和具有其他库依赖项的库一起使用
- 为什么我不能将 rand() 与数组的大小一起使用?
- 为什么我的 std::ref 无法按预期工作?
- 要与"if constexpr"一起使用的编译时消息(在预处理器之后)
- 不能将复制初始化与隐式转换的多个步骤一起使用
- 将fold表达式与std::一起用于两个元组
- spdlog标头仅与外部fmt一起使用.spdlog错误:'内部':不是'fmt'
- 将 std::allocate_shared 与多态资源分配器一起使用
- 为什么常量词在重载运算符中不与 ostream 对象一起使用<<?
- 将 OpenCV 与 CMAKE 中的项目一起构建为第三方库的正确方法
- 将 exprtk 与自定义类的对象一起使用
- 将 std::set 与基于键的比较器一起使用
- 如何将 Eigen::Ref 与 pybind11 一起使用?
- 我是否需要将 ref 与 make_pair 一起使用才能返回引用?