libc++: is_abstract<abstract_class_template<T>>::value is false

Dear developers,

I've run into strange behavior around std::is_abstract from libc++.
It off course returns true for classes with pure virtual functions, but
returns false for class templates with pure virtual functions. I'm
attaching a test code for the behavior. I tested on Debian with package
libc++-dev 3.9.1-2 and both clang-3.8 3.8.1-17 and clang-3.9.1-4.

I have little knowledge about C++ standards, but is this behavior
compliant with the standards?

FWIW, std::is_abstract from libstdc++ returns true for both cases.

test_is_abstract.cc (507 Bytes)

Hi Katsuhiko,

This is indeed a libc++ bug. Thank you for reporting it.

I have filed an actual bug report here: https://bugs.llvm.org/show_bug.cgi?id=32097

/Eric