How can I force a compile error in C++?

Dominic Birmingham picture Dominic Birmingham · Jan 31, 2013 · Viewed 15.8k times · Source

I would like to create a compile-time error in my C++ code with a custom error message. I want to do this for a couple of reasons:

  • to force compilation to fail while I'm working on new features which haven't been implemented yet. (compile time ! TODO reminder)
  • to create a more readable error when attempting to implement an unsupported template specialization.

I'm sure there is a trick to doing this but I cant find a resource explaining the method. I would wrap the code in a #define of the form COMPILE_FAIL("error message");

Thanks D

Answer

nneonneo picture nneonneo · Jan 31, 2013

Use #error:

#error "YOUR MESSAGE"

This produces an error from the preprocessor. If you want to detect an error at a later stage (e.g. during template processing), use static_assert (a C++11 feature).