Si noti che questo NON è un duplicato di How write a unit test for verifying compiling error? poiché non sono interessato a verificare la correttezza delle librerie esterne o del compilatore stesso.Errori di compilazione deliberata dell'unità di misura del codice modello
È tipico del C++, in particolare quando si tratta di modelli, di utilizzare tecniche che impediscono la compilazione di un particolare pezzo di codice. Poiché questi possono essere contorti, qual è il modo migliore per garantire che determinate parti di codice generino effettivamente errori del compilatore?
Poiché il test non deve nemmeno essere compilato, non è possibile fare affidamento su cose come boost-test, quindi suppongo che dovrebbe essere integrato nel sistema di generazione? In che modo vengono generalmente affrontati questi problemi?
Non capisco .. potresti fornire un esempio per la cosa che vuoi testare? –
Ad esempio, una classe template non dovrebbe essere istanziata se non c'è una specializzazione disponibile per un certo tipo, o che un particolare metodo non dovrebbe essere disponibile se un tipo non soddisfa certi requisiti, o in generale testare l'efficacia di 'boost :: enable_if', ecc. – UncleZeiv
Beh, scrivi solo un caso di test che non dovrebbe essere compilato, quindi controlla che non sia stato compilato .. forse cerca il messaggio di errore appropriato per assicurarti che non sia compilato per il * giusto * motivo. –