static_assert - eine Möglichkeit, Fehlermeldungen dynamisch anzupassen

9

Gibt es eine Möglichkeit, die Zeichenfolge von static_assert dynamisch anzupassen und dann anzuzeigen?
Was ich meine, ist etwas wie:

%Vor%     
smallB 15.10.2011, 15:26
quelle

3 Antworten

9

Nein, gibt es nicht.

Das ist jedoch nicht so wichtig, weil static_assert zur Kompilierzeit ausgewertet werden, und im Falle eines Fehlers wird der Compiler nicht nur die Nachricht selbst ausdrucken, sondern auch den Instanziierungsstapel (im Falle von Vorlagen).

Sehen Sie sich dieses synthetische Beispiel in ideone an:

%Vor%

Der Compiler gibt nicht nur die Diagnose aus, sondern gibt auch den vollen Stack aus:

%Vor%

Wenn Sie Python oder Java kennen und wie sie den Stack im Ausnahmefall drucken, sollte Ihnen das vertraut sein. In der Tat, es ist sogar noch besser, weil Sie nicht nur den Call-Stack bekommen, sondern Sie erhalten auch die Argumente Werte (Typen hier)!

Daher sind dynamische Nachrichten nicht so notwendig:)

    
Matthieu M. 15.10.2011 17:52
quelle
8

Der Standard gibt das zweite Argument von static_assert als Zeichenfolgenliteral an, also keine Möglichkeit für Berechnungen, soweit ich das sehe (außer für Präprozessor-Makros).

Ein Compiler könnte den Standard erweitern und const-Ausdrücke eines geeigneten Typs an dieser Position zulassen, aber ich habe keine Ahnung, ob ein Compiler das tut.

    
Patrick 15.10.2011 15:45
quelle
1

Wie Matthieu gesagt hat, ist das nicht möglich, aber Sie können einige der Funktionen, nach denen Sie suchen, mit Hilfe von Makros erhalten:

%Vor%     
OLP 20.11.2017 15:45
quelle

Tags und Links