Seite 1 von 1

(gelöst)[C++] using-Syntax für Funktionstypen

Verfasst: 10.05.2016, 21:42
von Krishty
Seit C++11 gibt es ja die wunderschöne neue using-Alternative zu typedef:

  using Index = size_t;

statt

  typedef size_t Index;

Ich würde das auch gern für Funktionen benutzen. Für Funktionszeiger ist das einfach:

  using CallbackPtr = bool (*)(Event);

statt

  typedef bool (*CallbackPtr)(Event);

Allerdings klappt das – im Gegensatz zu typedef – nur mit Zeigern und Referenzen auf Funktionen, nicht mit puren Funktionstypen:

  using Callback = bool ()(Event); // error: function returning function is not allowed

Habe ich da etwas missverstanden, oder muss ich erstmal bei typedef bleiben?

Re: [C++] using-Syntax für Funktionstypen

Verfasst: 10.05.2016, 22:28
von mnemonix

Code: Alles auswählen

using Callback = void (void *);

void f(void *)
{
}

Callback *c = f;

Re: [C++] using-Syntax für Funktionstypen

Verfasst: 10.05.2016, 23:10
von Krishty
Wow, darauf wäre ich in hundert Jahren nicht gekommen. Zumal Visual Studios IntelliSense dann warnt, die Funktion „void“ sei nicht deklariert :D Danke!

Re: (gelöst)[C++] using-Syntax für Funktionstypen

Verfasst: 11.05.2016, 00:24
von Gene
Interessanterweise benutzt man das recht häufig:

Code: Alles auswählen

std::function<void(void*)> func;
Das übergebene template Argument ist auch ein Funktionstyp, wie in mnemonix lösung