error: ‘placeholders’ is not a member of ‘boost’; did you mean ‘is_placeholder’ 这是怎么回事
时间: 2023-05-27 15:04:51 浏览: 41
这个错误意味着在 boost 命名空间中找不到名为 placeholders 的成员,但是找到了名为 is_placeholder 的成员,可能是因为你在代码中打错了成员名。你可以确认你的代码中是否正确引用了 placeholders。
相关问题
boost::placeholders::_1
boost::placeholders::_1 是 Boost 库中的一个特殊占位符,用于函数对象的参数绑定。它表示在调用时会被实际参数替换的位置。在 Boost 库的函数对象中,可以使用占位符来指定参数的位置,从而在调用时动态地绑定参数。在这个特殊占位符中,"_1" 表示第一个参数的位置,"_2" 表示第二个参数的位置,依此类推。这样可以方便地将函数对象与具体参数进行绑定,实现灵活的函数调用。
std::placeholders::_1, std::placeholders::_2
std::placeholders::_1和std::placeholders::_2是C++11标准库中的占位符,常用于函数模板中的参数列表。它们是用来占位函数模板参数的,例如当你需要传递一个函数模板的参数时,但是你还不确定这个参数的具体类型,那么你就可以使用占位符来占位。
当然,这个占位符不是一个真正的值,而是一个占位符,当你调用函数时,它会被替换成实际的值。例如,如果你有一个函数模板,它接受两个参数,并且你不确定这些参数的类型,你可以使用std::placeholders::_1和std::placeholders::_2来代表这些参数。
示例代码如下:
```c++
#include <iostream>
#include <functional>
template<typename T>
void print(const T& t1, const T& t2)
{
std::cout << t1 << " " << t2 << std::endl;
}
int main()
{
auto f = std::bind(&print<int>, std::placeholders::_1, std::placeholders::_2);
f(1, 2);
return 0;
}
```
在上面的代码中,我们使用std::bind函数来绑定一个函数指针和参数。我们将std::placeholders::_1和std::placeholders::_2作为函数模板print的参数,并将1和2作为实际参数传递给函数f。当我们调用f时,占位符std::placeholders::_1和std::placeholders::_2将被替换成实际的参数1和2。