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

Reply via email to