|
Boost : |
From: Christoph Ludwig (cludwig_at_[hidden])
Date: 2004-08-29 13:19:41
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_at_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_at_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
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk