Gibt es einen besonders guten Grund, einen ausgearbeiteten Typspezifizierer zu verwenden? Unter bestimmten Umständen ist es beispielsweise erforderlich, die Schlüsselwörter template
oder typename
zu verwenden, um eine abhängige template
oder den Typ zu disambiguieren.Wann ist ein ausgearbeiteter Typspezifizierer zu verwenden?
Aber ich kann nicht an irgendwelche Beispiele denken, wo dies für etwas wie eine Aufzählung auftreten würde. Nehmen Sie das folgende Codebeispiel:
enum Foo { A, B };
void bar(Foo foo);
void baz(enum Foo foo);
Warum kann ich wählen, um die Syntax zu verwenden baz()
bietet über bar()
(oder umgekehrt)? Gibt es einen mehrdeutigen Fall?
Ist die Baz-Syntax nicht nur eine Verschleppung aus dem alten C-Stil, in dem Sie die Enumeration nicht typisiert hatten, so dass Sie sie explizit als enum bezeichnen mussten? Wie, wie Sie struct Foo f verwenden würden; wenn du die Struktur nicht typisiert hättest? In C++ ist das Typedef implizit in der enum/struct-Deklaration, so dass Sie nicht angeben müssen, dass der Typ eine enum/struct ist? – cppguy
ähnlich ... http://stackoverflow.com/questions/742699/returning-an-enum-from-a-function-in-c –