Parameterpack verändern



  • Hallo,

    ich habe folgende Funktion:

    template<typename ...Params>
    void execute( std::string const& name, Params&&... params )
    {
        impl()->execute( name, std::forward<Params>( params )... );
    }
    

    Ich möchte jetzt für std::string-Parameter den Wert verändern, gibt's da ne Möglichkeit?



  • @DocShoe sagte in Parameterpack verändern:

    gibt's da ne Möglichkeit?

    Nope, das ist ausgeschlossen. 🚦


  • Mod

    mit eigenem Forwarder?

    template<typename T>
    using reference_or_string_t = std::conditional_t<std::is_same_v<T&, std::string&>, std::string, T&&>;
    
    template<typename T>
    constexpr reference_or_string_t<T> my_forward(std::remove_reference_t<T>& t) { return std::forward<T>(t); }
    
    template<>
    std::string my_forward<std::string>(std::string& s) { return s + s; }
    template<>
    std::string my_forward<std::string&>(std::string& s) { return s + s; }
    
    template<typename ...Params>
    void execute( std::string const& name, Params&&... params )
    {
       impl()->execute( name, my_forward<Params>( params )... );
    }
    

Anmelden zum Antworten