社区
C++ 语言
帖子详情
请教一个关于BOOST中bind 与 tuple 的问题
fengchang
2007-04-18 11:34:45
typedef boost::tuples::tuple<int,string,string> person;
person p1(30,"feng","chang");
boost::bind(person::get<0>,_1)(p1);
如上代码,如何才能编译通过啊,谢谢(vc2003)
...全文
278
19
打赏
收藏
请教一个关于BOOST中bind 与 tuple 的问题
typedef boost::tuples::tuple person; person p1(30,"feng","chang"); boost::bind(person::get,_1)(p1); 如上代码,如何才能编译通过啊,谢谢(vc2003)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Oversense
2007-04-19
打赏
举报
回复
后来,就没有后来了。。。多谢关心
yutaooo
2007-04-19
打赏
举报
回复
步步文 真坏.起哄啊!对了, 你是上次接外包项目被坑的吗人吗?后来怎么样啦?
fengchang (everate) 顶你一下,认真求知的态度,学习!
向taodm的技术表示赞叹,对taodm态度表示不赞叹.
WinWing
2007-04-19
打赏
举报
回复
看taodm大哥的回复想笑,呵呵
Oversense
2007-04-19
打赏
举报
回复
taodm 胜出
要 cast
taodm
2007-04-19
打赏
举报
回复
如果你要问VC怎么个不符合标准,是没办法给答案的。
你如果想知道要如何编译过代码,就多认真看看boost的文档
里面有这样的例子:
void foo(int);
void foo(float);
int i;
...
bind(&foo, _1)(i); // error
...
void (*pf1)(int) = &foo;
bind(pf1, _1)(i); // ok
bind(static_cast<void(*)(int)>(&foo), _1)(i); // ok
fengchang
2007-04-19
打赏
举报
回复
taodm您别急,总归问问题的想知道答案啊,您这一句不符合标准也太宽泛了。我还是不知道答案啊。
proxiaobai
2007-04-19
打赏
举报
回复
boost::bind(person::get<0>,_1)(p1);
tuples应该相当于std::pair的作用吧
person::get<0>你认为一定是返回函数一个person的形参为空的成员函数指针吗?
taodm
2007-04-19
打赏
举报
回复
和你真绕口,VC编译器不符合标准。
fengchang
2007-04-19
打赏
举报
回复
那为什么tracer的那段代码可以编译通过,谢谢
taodm
2007-04-19
打赏
举报
回复
见我最开始的回答。
fengchang
2007-04-19
打赏
举报
回复
具体点呢?谢谢
taodm
2007-04-19
打赏
举报
回复
VC编译器不符合标准。
fengchang
2007-04-19
打赏
举报
回复
哪段代码,具体哪里不复合标志了。这样指明了,我可自己对照标志阅读。
taodm
2007-04-19
打赏
举报
回复
VC不符合标准。
fengchang
2007-04-19
打赏
举报
回复
taodm能不能说的具体点呢,以利于进一步自身提升。
您的意思是trace的调用那个代码片断不复合c++标准?
taodm
2007-04-19
打赏
举报
回复
VC的编译器是有些问题的。我只能告诉你根据C++标准你需要做什么。
fengchang
2007-04-19
打赏
举报
回复
请教高人啊,自己顶一下
fengchang
2007-04-18
打赏
举报
回复
class trace
void print(const std::string& s) const {
std::cout <<"const"<<s<< '\n';
}
void print(const std::string& s)
{
std::cout <<s<< '\n';
}
}
trace t;
bind(trace::print,_1,_2)(t,"ok");
怎么就可以编译通过呢?
taodm
2007-04-18
打赏
举报
回复
因为get有const和非const 2个重载版本。得先static_cast指针转换以获取正确的版本。
建议你就别用bind了。
关于c++
boost
::
bind
的一些理解
1 介绍 一般来说
boost
::
bind
有两种方式的调用,一种是对自由...需要注意的一点是,
boost
::
bind
里的参数个数一定要与被
bind
的函数相同。 2 用法 【
bind
】 一般用法:
bind
用于一般普通函数( 以非类、结构的成员函数 )
以
boost
::function和
boost
:
bind
取代虚函数
以
boost
::function和
boost
:
bind
取代虚函数 这是一篇比较情绪化的blog,
中
心思想是“继承就像一条贼船,上去就下不来了”,而借助
boost
::function和
boost
::
bind
,大多数情况下,你都不用上贼船。
boost
::function和...
【
BOOST
C++ 12 函数式编程】(3)
Boost
.
Boost
.
Bind
Boost
.
Bind
是
一个
库,它简化和概括了最初需要 std::
bind
1st() 和 std::
bind
2nd() 的功能。这两个函数被添加到 C++ 98 的标准库
中
,即使它们的签名不兼容,也可以连接函数。
boost
::
bind
的理解与使用
其实这得益于c++的模板以及操作符重载,去看
boost
::
bind
的实现就会发现它是
一个
有n多重载的函数,这些重载主要是为了适应函数的参数个数。 其实
boost
::
bind
的原理是函数对象,而函数对象就是
一个
重载了()操作符
Please use
boost
/
bind
/
bind
.hpp + using namespace
boost
::placeholders
The practice of declaring the
Bind
placeholders (_1, _2, …) in the global ... + using namespace
boost
::placeholders, or define
BOOST
_
BIND
_GLOBAL_PLACEHOLDERS to retain the current behavior. 提示war
C++ 语言
64,648
社区成员
250,503
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章