
Jeffrey Lee Hellrung, Jr.-2 wrote:
On Fri, May 6, 2011 at 7:59 PM, Lorenzo Caminiti <lorcaminiti@gmail.com>wrote:
On Fri, May 6, 2011 at 2:07 PM, Lorenzo Caminiti <lorcaminiti@gmail.com> wrote:
On Fri, May 6, 2011 at 1:32 PM, Jeffrey Lee Hellrung, Jr. <jeffrey.hellrung@gmail.com> wrote:
Would "const bind(int)& x" work?
It think yes :) I should be able to support the syntax (also with optional leading const and optional &):
bind& x // deduced type (with Boost.Typeof) bind(int)& x // specify type (no Boost.Typeof)
More in general "[const] bind [(type)] [&] name" where "[t]" indicates that token t is optional.
[...snip preprocessor details...]
Awesome.
I have implemented this: http://svn.boost.org/svn/boost/sandbox/local/libs/local/doc/html/boost_local... #include <boost/local/function.hpp> #include <boost/local/block.hpp> #include <boost/local/exit.hpp> #include <vector> #include <algorithm> #include <iostream> #include <sstream> #include <cassert> class adder { public: adder(): sum_(0.0) {} double sum(const std::vector<double>& nums, const int& factor = 10) { std::ostringstream out; void BOOST_LOCAL_FUNCTION_PARAMS(double num, const bind(const int&) factor, // Specify bind types bind(std::ostringstream)& out, // explicitly (so no bind(adder*) this) { // Boost.Typeof for binds). this_->sum_ += factor * num; out << "Summed: " << this_->sum_ << std::endl; } BOOST_LOCAL_FUNCTION_NAME(add) std::for_each(nums.begin(), nums.end(), add); BOOST_LOCAL_EXIT(const bind(std::ostringstream)& out) { std::cout << out.str(); } BOOST_LOCAL_EXIT_END BOOST_LOCAL_BLOCK(bind(std::ostringstream)& out, const bind(adder*) this) { out << "Asserted: " << this_->sum_ << std::endl; assert(this_->sum_ > 0.0); } BOOST_LOCAL_BLOCK_END return sum_; } private: double sum_; }; int main() { std::vector<double> v(3); v[0] = 100.0; v[1] = 90.5; v[2] = 7.0; adder a; // sum = 10 * 100.0 + 10 * 90.5 + 10 * 7.0 = 1975.0 assert(a.sum(v) == 1975.0); return 0; } --Lorenzo -- View this message in context: http://boost.2283326.n4.nabble.com/local-Help-for-the-Alternatives-section-t... Sent from the Boost - Dev mailing list archive at Nabble.com.