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

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
Benutzeravatar
Krishty
Establishment
Beiträge: 8316
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

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

Beitrag 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?
Zuletzt geändert von Krishty am 10.05.2016, 23:10, insgesamt 1-mal geändert.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
mnemonix
Establishment
Beiträge: 101
Registriert: 09.04.2010, 20:38

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

Beitrag von mnemonix »

Code: Alles auswählen

using Callback = void (void *);

void f(void *)
{
}

Callback *c = f;
Benutzeravatar
Krishty
Establishment
Beiträge: 8316
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

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

Beitrag 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!
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Gene
Beiträge: 25
Registriert: 22.05.2003, 11:26

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

Beitrag 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
Antworten