The current implementation returns misleading results if used the wrong way. A
simple example is:
#include <iostream>
struct X;
int main()
{
std::cout << __is_abstract(X) << std::endl;
}
compiles and prints "0". Things get worse when templates are involved. PR
libstdc++/39405 shows why this can be a real problem. I attach the example code
from 39405 to this PR again.
--
Summary: c++0x type-traits should error out in case of
incompleteness
Product: gcc
Version: 4.3.2
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: d dot frey at gmx dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39475