其他分享
首页 > 其他分享> > c – 如何绑定到vector <> :: at?

c – 如何绑定到vector <> :: at?

作者:互联网

在Visual C 2013中,以下代码给出了“模糊调用”编译错误:

typedef vector<int> V;
V v;
auto b1 = bind(&V::at, &v);

现在我四处搜索,发现我应该投射到我想要的签名.所以我这样做:

auto b2 = bind(static_cast<int(V::*)(V::size_type)>(&V::at), &v);

现在,错误是:

'static_cast' : cannot convert from 'overloaded-function' to 'int (__thiscall std::vector<_Ty>::* )(unsigned int)'

我该怎么做才能正确?

解决方法:

V :: at的返回类型是V :: reference:

auto b = std::bind(static_cast<V::reference (V::*)(V::size_type)>(&V::at), v);

不用说,这是令人厌恶的.

标签:c,functor
来源: https://codeday.me/bug/20190825/1717247.html