Chciałbym utworzyć makro, które może porównać 2 ciągi i wygenerować błąd czasu kompilacji, jeśli warunek nie zostanie spełniony. Może to być jednak twierdzenie o czasie kompilacji.W jaki sposób można statycznie porównywać dwa ciągi znaków w czasie kompilacji?
Nie jestem pewien, jak mógłbym to zrobić.
Na przykład:
STATIC_COMPARE("THIS STRING","THIS STRING") -> would emit a compile time error
STATIC_COMPARE("THIS STRING","THIS OTHER STRING) -> wouldn't emit a compile time error.
Makro wyglądałyby
#define STATIC_COMPARE(str1,str2) if (str1==str2) emit an error with a message
Sądzę więc, że kwestia sprowadza się do bycia w stanie porównać 2 ciągi w czasie kompilacji.
Czy zakładając ciąg dosłownego łączenie również powiązane z [długość obliczeniowa ciąg C w czasie kompilacji. Czy to naprawdę jest constexpr?] (Http://stackoverflow.com/q/25890784/1708801) –