Auto-Schlüsselwort in Vorlagenparametern: Bewertung der Machbarkeit und aktueller Einschränkungen
Während C eine umfassende Typinstanziierung innerhalb von Vorlagenparametern ermöglicht, bleibt die Frage, ob Vorlagenparameter können explizit mit dem Schlüsselwort „auto“ deklariert werden. Dies würde den Komfort bei der Kompilierung erheblich verbessern und die manuelle Angabe von Argumenttypen überflüssig machen, insbesondere für komplexe Typen wie Zeiger-auf-Member-Funktionen.
Aktuelle Einschränkungen
Trotz der Attraktivität einer solchen Funktion ist sie derzeit in der C-Sprache nicht möglich. Während das bereitgestellte Codebeispiel versucht, einen Vorlagenparameter mit „auto“ zu definieren, erzwingt der Compiler strikt die konventionelle Syntax und erfordert explizite Typdeklarationen innerhalb der Vorlagenparameter.
Problemumgehungen
Während eine direkte Lösung für diese Einschränkung noch schwer zu finden ist, gibt es praktikable Workarounds, um die Argumentübergabe zu vereinfachen:
<code class="cpp">#define AUTO_ARG(x) decltype(x), x</code>
Dieses Makro kann dann wie folgt verwendet werden:
<code class="cpp">f.bar<AUTO_ARG(5)>(); f.bar<AUTO_ARG(&Baz::bang)>();</code>
<code class="cpp">template <typename T> struct foo { foo(const T& x) {} // do whatever }; template <typename T> foo<T> make_foo(const T& x) { return foo<T>(x); }</code>
Diese Generatorfunktion ermöglicht eine vereinfachte Argumentübergabe:
<code class="cpp">make_foo(5); make_foo(&Baz::bang);</code>
Zukünftige Überlegungen
Obwohl diese Problemumgehungen Obwohl sie praktische Lösungen bieten, könnte die Aufnahme eines „auto“-Schlüsselworts in Vorlagenparameter immer noch als potenzielle Verbesserung für zukünftige C-Versionen in Betracht gezogen werden.
Das obige ist der detaillierte Inhalt vonKönnen wir „auto' für Vorlagenparameter in C verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!