статические утверждают, что шаблон typename T НЕ завершен?

Есть ли способ static_assert, что тип TНе завершить в этот момент в заголовке? Идея состоит в том, чтобы иметь ошибку компиляции, если кто-то добавляет #include в будущем в тех местах, где он не должен быть.

связанные с:Как написать шаблон `is_complete`?

Используя ответ этой ссылки,

namespace
{
template<class T, int discriminator>
struct is_complete {
  static T & getT();
  static char (& pass(T))[2];
  static char pass(...);
  static const bool value = sizeof(pass(getT()))==2;
};
}
#define IS_COMPLETE(X) is_complete<X,__COUNTER__>::value
class GType;
static_assert(!IS_COMPLETE(GType),"no cheating!");

к сожалению, это приводит к ошибке "недопустимое использование типа не завершено", черт возьми. Есть ли способ заявить об отрицании?

Ответы на вопрос(2)

Ваш ответ на вопрос