Search code examples
c++algorithmfunctionchainingfunction-call

How to write a add function chaining?


I have questions on where to even start on this problem. The problem requires the following.

// We want to create a function that will add numbers together,
// when called in succession.

add(1)(2); // == 3

I have never seen functions be used in such a way, and I am currently at a loss of where to start. Furthermore, I tried to do some research on parameter chaining, but this is all I could find.

https://levelup.gitconnected.com/how-to-implement-method-chaining-in-c-3ec9f255972a

If you guys have any questions, I can edit my code or question. Any help is appreciated.


Solution

  • .... way and I am currently at a loss of where to start?

    One way, is to start with an anonymous (unnamed) functor, which has operator(), that returns the reference to the this, as follows:

    struct {  // unnamed struct
        int result{ 0 };
    
        auto& operator()(const int val) noexcept
        {
            result += val;
            return *this;   // return the instance itself
        }
        // conversion operator, for converting struct to an int
        operator int() { return result; }
    
    } add;  // instance of the unnamed struct
    
    
    int main() 
    {
        std::cout << add(1)(2); // prints:  3
    }
    

    See a live demo


    Read more about the unnamed structs, functors and conversion operator here: