estática afirma que o nome do tipo de modelo T NÃO está completo?

Existe uma maneira de static_assert que um tipo T éNão concluir nesse ponto em um cabeçalho? A idéia é ter um erro de compilação se alguém adicionar #includes no caminho em lugares que não deveriam estar.

relacionados:Como escrever o modelo `is_complete`?

Usando a resposta desse link,

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!");

infelizmente, isso gera o erro "uso inválido do tipo incomleto", oh. Existe uma maneira de afirmar a negação?

questionAnswers(2)

yourAnswerToTheQuestion