Boost logo

Boost :

Subject: [boost] [function] Multi-signature function?
From: TONGARI J (tongari95_at_[hidden])
Date: 2014-03-11 12:22:01


Hi folks,

I know it'd be better to say "overload", but I choose the word carefully
because I'm aware of Boost.OverloadedFunction, which is not what I'm
talking here (it's complementary, though).

What I want is to have std/boost::function support multi-signature itself,
instead of relying on some external wrapper which is less efficient. For
example:

    struct A
    {
        int operator()() const;

        int operator()(int val) const;
    };

    function<int(), int(int)> f(A{...});

f can store one instance of A internally, compared to the external
approach, in which case each overload holds a standalone instance, plus the
control data.

I know Boost.Function has its baggage from C++98/03, so changing the
interface may not be appropriate, in that case a new library can be
considered (Boost.Overload?).

A sample C++11 implementation can be found here:
https://gist.github.com/jamboree/9489193

What do you think?


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk