statisch behaupten, dass der Vorlagentypname T NICHT vollständig ist?

Gibt es eine Möglichkeit, static_assert, dass ein Typ T @ isNich an dieser Stelle in einer Kopfzeile vervollständigen? Die Idee ist, einen Kompilierungsfehler zu haben, wenn jemand #includes die Straße hinunter an Stellen hinzufügt, an denen dies nicht der Fall sein sollte.

verbunden:Wie schreibe ich eine `is_complete` Vorlage?

Nutzen Sie die Antwort dieses Links,

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

Leider gibt dies "ungültige Verwendung des unvollständigen Typs" Fehler, d'oh. Gibt es eine Möglichkeit, die Negation durchzusetzen?