
lcaminiti wrote:
On Sun, May 8, 2011 at 1:06 PM, Lorenzo Caminiti <lorcaminiti@gmail.com> wrote:
On Sun, May 8, 2011 at 11:22 AM, Mathias Gaunard
The type erasure appear unnecessary, and this implementation has big forwarding problems.
What about
Yes, makes sense. Using your suggestion:
Hi all, the following code compiles and runs just fine on GCC but it given the error below on MSVC. The error seems to be about a conversion to boost::function_base inside Boost.Function...
[...]
I have implemented local function overloading: http://svn.boost.org/svn/boost/sandbox/local/libs/local/doc/html/boost_local... http://svn.boost.org/svn/boost/sandbox/local/boost/local/function/overload.h... http://svn.boost.org/svn/boost/sandbox/local/boost/local/aux_/overload_base.... #include <boost/local/function/overload.hpp> // Include header for overloading. #include <boost/local/function.hpp> #include <vector> #include <algorithm> #include <iostream> #include <string> int print_add(int x, int y) { std::cout << x << " + " << y << " = "; return x + y; } int main() { char end = '\n'; void BOOST_LOCAL_FUNCTION_PARAMS(const std::string& item, const bind& end) { std::cout << item << " (string)" << end; } BOOST_LOCAL_FUNCTION_NAME(print_string) void BOOST_LOCAL_FUNCTION_PARAMS(const double& item, const char* name, default " (double)", const bind& end) { std::cout << item << name << end; } BOOST_LOCAL_FUNCTION_NAME(print_double) boost::local::function::overload< void (const std::string&) , void (const double&) // Overload 1st param type. , void (const double&, const char*) // Overload giving default param. , int (int, int) // Overload giving 2 params (from function pointer). > print(print_string, print_double, print_double, print_add); std::vector<std::string> s(3); s[0] = "ab"; s[1] = "cd"; s[2] = "ef"; std::for_each(s.begin(), s.end(), print); // Call `print_string` 1-param. std::vector<double> d(2); d[0] = 1.2; d[1] = 3.4; std::for_each(d.begin(), d.end(), print); // Call `print_double` 1-param. print(-1.234, " (real)"); // Call `print_double` 2-params. std::cout << print(2, 3) << std::endl; // Call `print_add`. 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.