perfect forwarding und funktionsaufruf



  • hab ich mal auf einem implementationsvorschlag bei cppreference gesehen.

    inwiefern macht das sinn?

    also...

    forward<F>(f)(forward<A>(a)...);

    wozu das erste forward?

    verarsche?



  • #include <iostream>
    
    struct A {
    	void operator()() & {
    		std::cout << "Call by Lvalue\n";
    	}
    	void operator()() && {
    		std::cout << "Call by Rvalue\n";
    	}
    };
    
    template <typename T>
    void invoke(T&& t) {
    	std::forward<T>(t)();
    }
    
    int main() {
    	A a;
    	invoke(a);
    	invoke(std::move(a));
    }
    


  • Oh fuck ja.

    Ist das c++11?

    Fuck ja.


Log in to reply