20 May
2009
20 May
'09
10:31 p.m.
AMDG Dmitry Vinogradov wrote:
Imagine the following:
struct foo { bar& operator[](int); bar& operator[](std::string); } Foo;
boost::variant<int, std::string> Idx;
Is some simple way exist to apply foo::operator[](T) for Foo and Idx?
Something like boost::apply_visitor(boost::bind(&foo::operator[], boost::ref(Foo), _1), Idx); // does not compile
You can either use a combination of bind and lambda: (untested) boost::bind<bar&>(boost::lambda::ret<bar&>(boost::lambda::var(Foo)[boost::lambda::_1]), _1); or you can write your own function object In Christ, Steven Watanabe