Kann ich einen Funktionstyp schreiben, der eine Funktion zurückgibt?
Das Folgende kann nicht auf gcc und clang kompiliert werden
#include <type_traits>
int foo();
int main()
{
using R = std::result_of_t<decltype(foo)()>; // error
}
Der Fehler auf beiden Compilern betrifft die Unzulässigkeit der Deklaration einer Funktion, die eine Funktion zurückgibt. Aber ich erkläre eine solche Funktion nicht - ich versuche nur, ihren Typ zu schreiben - da ist das, wasresult_of
erwartet. Ist das wirklich noch schlecht geformt?