Wie erzwinge ich die Begrenzung der Kind-of-X-Beschränkung auf den Template-Parameter?

9

Angenommen, ich möchte die Einschränkung erzwingen, dass der übergebene Template-Parameter ein Kind von Foo ist.

Gibt es eine Möglichkeit, dies durch Typeigenschaften durchzusetzen? Ein Kompilierungszeit static_assert Fehler wäre großartig.

Machen Sie im folgenden Code eine zweiteilige (separate) Frage.

  1. Erlaube nur My_Limited_Template<Bar> zu kompilieren.
  2. Erlaube nur My_Limited_Template<TBar> zu kompilieren.

BEARBEITEN Ich entschuldige mich für die schlechte Benennung: TBar und TBaz sind beabsichtigt, um nicht-Vorlage-Klassen zu Zwecken zu sein. Ich habe T einfach vor die Namen angehängt, um aus den Klassen in Teil 1 zu disambiguieren.

CODE

%Vor%     
kfmfe04 25.12.2012, 06:59
quelle

1 Antwort

1

Ich nehme an, dass Sie bei der Definition von TBar und TBas einen Fehler gemacht haben, überprüfen Sie, ob meine Änderung korrekt ist.

%Vor%     
Leonid Volnitsky 25.12.2012, 07:17
quelle

Tags und Links