is_abstract< A<int> > fails with gcc 3.4.1

FYI: According to the regression tests, gcc 3.4.1 supports boost::is_abstract<T>. Unfortunately, that does not hold if T is a class template specialization, as exhibited by the following program: cludwig@lap200:~/C++/gcc3.4/tmp> cat ./is_abstract_test.cc #include <iostream> #include <iomanip> #include <boost/type_traits/is_abstract.hpp> template<typename T> class A { virtual void f() = 0; }; class B { virtual void f() = 0; }; int main() { std::cout << std::boolalpha; std::cout << "is_abstract< A<int> >::value == " << boost::is_abstract< A<int> >::value << '\n'; std::cout << "is_abstract< B >::value == " << boost::is_abstract< B >::value << '\n'; } cludwig@lap200:~/C++/gcc3.4/tmp> ./is_abstract_test is_abstract< A<int> >::value == false is_abstract< B >::value == true This causes problems, e.g., when using the serialization library with class templates. I entered the problem in the gcc bug database. It's PR#17232. Christoph -- http://www.informatik.tu-darmstadt.de/TI/Mitarbeiter/cludwig.html LiDIA: http://www.informatik.tu-darmstadt.de/TI/LiDIA/Welcome.html
participants (1)
-
Christoph Ludwig