Как сказал Тимо Гойш: для этого используется директива #pragma message
.
В качестве экзотического побочного эффекта метапрограммирования шаблона также можно использовать компилятор в качестве калькулятора:)
template<int i> struct Message;
template<int i> struct Fac {
static const int v = i * Fac< i-1 >::v;
};
template<> struct Fac<1> { static const int v = 1; };
Message< Fac<10>::v > m;
приведет к выходному сообщению
Line 10: error: aggregate 'Message<3628800> m' has incomplete type and cannot be defined