为什么这不起作用(Visual C++ 2012更新1),修复它的正确方法是什么?
#include <boost/lambda/bind.hpp>
namespace bll = boost::lambda;
struct Adder
{
int m;
Adder(int m = 0) : m(m) { }
int foo(int n) const { return m + n; }
};
#define bindm(obj, f, ...) bind(&decltype(obj)::f, obj, __VA_ARGS__)
int main()
{
return bll::bindm(Adder(5), foo, bll::_1)(5);
}发布于 2012-12-11 19:28:33
发布于 2012-12-11 18:59:50
一个编译器错误。
明确允许将解密类型说明符(7.1.6.2简单类型说明符dcl.type.simple)作为嵌套名称特定项(5.1主表达式expr.prim -> 5.1.1通用expr.prim.general] #8)
PS。在@ecatmur的想法之后:
template<typename T> struct id { typedef T type; };
#define bindm(obj, f, ...) bind(&id<decltype(obj)>::type::f, obj, __VA_ARGS__)https://stackoverflow.com/questions/13818072
复制相似问题