Funktionssignatur zerlegen / zusammensetzen



  • Ich suche ein Möglichkeit von folgendem:

    bool (*foo)(int);
    

    das

    //typedef bool ret_type;
    //typedef int arguments;
    

    zu extrahieren, ODER andersrum (also wieder zusammensetzen)

    Anwendung: Für ein Functor, der Funktionen kapselt:

    // Nur Beispielhaft
    template </*???*/>
    struct custom_functor {
        // typedef ?
    
        // alles groß = Template Argument (bisher)
        RET_TYPE operator()(ARGUMENTS ... args) {
            return FUNC(args ...); 
        }
    };
    

    Das ganze kann ich zwar theoeretisch ausdrücken, aber mit Templateparametern, bei denen sich mir eher der Magen umdreht (mit Dopplungen, also: Funktionstyp, Rückgabetyp, Funktionszeiger, Argumente).

    EDIT: Meine Versuche mit decltype für den Rückgabetyp haben nicht ganz gefruchtet, ich hatte: decltype(FUNC()); versucht



  • std::function kennst du?



  • *facepalm*

    Aus Interesse schau ich mir aber mal das aus der Standardbibliothek an.

    EDIT: Oh, da hätte ich glaube noch lange gebastelt, da wäre ich nicht so schnell drauf gekommen. (Ich meine damit nicht std::function, sondern wie es realisiert ist)


Anmelden zum Antworten