Como escrever testes executáveis de static_assert?
Eu estou escrevendo um conjunto de teste de unidade para uma biblioteca de código fonte que contémstatic_assert
s. Eu quero fornecer garantia estesstatic_assert
Não faça mais nem menos do que se deseja fazer, em termos de design. Então eu gostaria de poder testá-los.
Eu poderia, claro, adicionar testes de unidade não-compensáveis da interface que causamstatic assert
s ser violada por uma variedade abrangente de meios, e comentar ou#if 0
todos eles fora, com minha garantia pessoal para o usuário de que, se algum deles não for comentado, eles observarão que a biblioteca não compila.
Mas isso seria bastante ridículo. Em vez disso, eu gostaria de ter algum aparato que, no contexto do conjunto de testes unitários, substituíssestatic_assert
com uma exceção de tempo de execução provida equivalentemente, que a estrutura de teste poderia capturar e relatar em vigor: Esse código teriastatic_assert
ed em uma construção real.
Eu estou negligenciando alguma razão gritante por que isso seria uma idéia idiota?
Se não, como isso pode ser feito? Aparelho de macro é uma abordagem óbvia e não descarto isso. Mas talvez também, e de preferência, com uma especialização de modelo ou abordagem SFINAE?