|
Boost : |
Subject: [boost] [function] support for overloaded function
From: Oliver Kowalke (k-oli_at_[hidden])
Date: 2008-10-30 04:35:36
Hello,
how can I support the return type of bind as well as function as function argument in following code.
regards,
Oliver
#include <iostream>
#include <cstdlib>
#include <stdexcept>
#include <boost/bind.hpp>
#include <boost/function.hpp>
struct X {};
struct Y
{
template< typename R >
void f( boost::function< R() > const& fn)
{}
template< typename R >
void f( boost::function< R( X &) > const& fn)
{}
};
struct Z
{
int u( int i)
{ return i; }
int v( X & x, int i)
{ return i; }
};
int main( int argc, char *argv[])
{
try
{
Y y;
X x;
Z z;
// does not compile
y.f(
boost::bind(
& Z::u,
z,
1) );
boost::function< int() > fn1(
boost::bind(
& Z::u,
z,
1) );
y.f( fn1);
// does not compile
y.f(
boost::bind(
& Z::v,
z,
_1,
1) );
boost::function< int( X &) > fn2(
boost::bind(
& Z::v,
z,
_1,
1) );
y.f( fn2);
return EXIT_SUCCESS;
}
catch ( std::exception const& e)
{ std::cerr << e.what() << std::endl; }
catch ( ... )
{ std::cerr << "unhandled" << std::endl; }
return EXIT_FAILURE;
}
-- Ist Ihr Browser Vista-kompatibel? Jetzt die neuesten Browser-Versionen downloaden: http://www.gmx.net/de/go/browser
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk