如何将'this'绑定到 C++ TR1 中的类函数?
How to bind 'this' to a class function in C++ TR1?
我想从一个特定实例为一个类方法创建一个函数。在示例中,我想为this->x
创建一个函数。
class A {
public:
void x(int p) { }
void y() {
function<void(int)> f = std::tr1::bind(
&A::x,
this,
std::tr1::placeholders::_1);
}
};
当我试图编译这个时,我得到了很长的错误消息。其中一个比较有意义的是note: no known conversion for argument 1 from ‘int’ to ‘int&’
最好从TR1(这是2006年的非正式提案)迁移到c++ 11,后者逐字合并了TR1的大部分内容(这意味着如果您只是删除tr1::
, TR1程序可能会转换为c++ 11)。
虽然接口基本相同,但TR1的实现是分开的。所以它基本上被冻结在时间里,新的编译器的怪癖可能会导致它崩溃。或者在其他平台上,他们可能将TR1特性别名转发到"本地"c++ 11,这意味着tr1::
类可能与实际的TR1规范有所不同。
在GCC上,删除tr1::
后,从头文件中删除tr1/
,并在命令行中传递-std=c++11
。
相关文章:
- 如何修复以下错误"no match for call to '(std::tr1::shared_ptr<_iobuf*>) (FILE*&)'"
- TR1提供的所有东西现在都可以在C++14中使用并且易于使用吗
- Mac C++ 编译器找不到 <TR1/unordered_map>
- std :: tr1 :: shared_ptr throw bad_alloc,也是一个好主意
- 对 TR1 使用 boost 时提升数学特殊函数编译错误
- std::tr1::函数和它接受的模板值
- TR1::绑定和通过引用传递,这种行为真的是预期的吗?
- 用TR1 :: Shared_ptr类型实现std ::相等
- C++, TR1, Regex and Boost
- c value_type对于std :: tr1不起作用:std :: map中的元组
- tr1::hash for uint64_t
- 擦除 std::tr1::unordered_map 中的元素
- Boost或等效于gsl_ matrix的TR1等
- xcode 4.4.1 c++11标头仍在tr1下存档
- GHashTable vs std::tr1::unordered_map
- boost::function 和 std::tr1::function 之间是否有重要的区别需要了解
- std::tr1::函数为VS2008 SP1中的x64配置提供链接错误
- std::tr1::shared_ptr and dynamic_cast
- 标准::TR1::unordered_map插入错误
- boost::hash/std::tr1::hash 不为复制的 const char* 返回相同的哈希