Douglas Gregor wrote: > We've discussed making boost::ref/boost::cref work for arbitrary > functions > objects before. I just committed a version of ref.hpp that supports > this > ability to the sandbox. With this code, you can write: > > std::transform(c.begin(), c.end(), out, boost::ref(f)); > > or, if you don't want the return type deduced, specify it as in > Boost.Bind: > > std::transform(c.begin(), c.end(), out, boost::ref<float>(f)); > > Features of this implementation: > - Return type deduction (discussed below) > - Argument type deduction (discussed below) > - Able to handle function objects that have multiple arities (e.g., > can be > invoked with 0 or 2 arguments)
That's very nice! [...] > ------Compatibility------ > This version of ref.hpp is backwards-compatible with the existing > version of > ref.hpp on a compiler that can handle the new ref.hpp (needs partial > specialization and proper SFINAE handling). At some point I'll write a > stripped-down version that other compilers can handle. I tried to do this once and failed. It's hard to make operator() work on deficient compilers (esp. the zero-arg version that is not a template) without breaking ref(x) where x is not a function object. _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost