2015-06-22 16:17 GMT+02:00 Tobias Loew
Sorry for that,
I've made in implementation with free functions which compiles on VS 2012:
#include
#include template
auto bind(const boost::optional<T>& optional, B&& binder) -> typename std::decay ::type { if(optional) { return std::bind(binder, *optional)(); } else { return boost::none; } } template
auto map(const boost::optional<T>& optional, B&& binder) -> boost::optional ::type> { if(optional) { return std::bind(binder, *optional)(); } else { return boost::none; } } void foo() { struct A { int i; }; boost::optional<A> opt_a;
auto opt_i = map(opt_a, &A::i); assert(!opt_i);
A a = {42}; opt_a = a;
auto opt_i2 = map(opt_a, &A::i); assert(*opt_i2 == 42);
}
Would you find the following an acceptable solution?
```
#include