我将以下内容放入 Ideone.com(和 codepad.org):
#include <iostream>
#include <string>
#include <tr1/functional>
struct A {
A(const std::string& n) : name_(n) {}
void printit(const std::string& s)
{
std::cout << name_ << " says " << s << std::endl;
}
private:
const std::string name_;
};
int main()
{
A a("Joe");
std::tr1::function<void(const std::string&)> f = std::tr1::bind(&A::printit, &a, _1);
a("Hi");
}
并得到这些错误:
prog.cpp:在函数'int main()'中:
prog.cpp:18: 错误: '_1' 未在此范围内声明
prog.cpp:19: 错误:不匹配调用 '(A)(const char [3])'</p>
prog.cpp:18:警告:未使用的变量“f”</p>
我一生都无法弄清楚第 18 行出了什么问题。