Comment créer une macro personnalisée qui se comporte différemment lorsqu’elle est utilisée en tant que constexpr (comme assert)?

À partir de C ++ 14, la macro assert peut être utilisée dans des fonctions même lorsqu’elles sont définies en tant que constexpr. Je sais que cela a à voir avec le fait que le résultat est évalué comme “vrai”, mais j’ai du mal à comprendre à quoi ressemble le code.

En particulier, comment créer une macro qui imprime quelque chose lorsqu’elle est exécutée dans une fonction constexpr en cours d’évaluation au moment de l’exécution, mais ferme ce comportement non-constexpr lorsque la fonction constexpr est en cours d’évaluation au moment de la compilation.