
David Abrahams <dave <at> boost-consulting.com> writes:
I don't think this is a solvable problem, unless there's something hiding in the implementation of is_base_and_derived that can be leveraged (see the comment in that header for more info -- I can't understand what's being said there due to the use of the identifier 'C' without any introduction). The basic problem is what's required in the implementation of is_convertible in order to work around VC7.1 bugs (Intel Windows emulates the same bugs).
It don't think it's VC/Intel specific problem. GCC 3.4.4 also refuses to compile this code: #include <boost/type_traits.hpp> #include <boost/noncopyable.hpp> class C : public boost::noncopyable { }; int main() { bool br = boost::is_convertible<C, C>::value; return static_cast<int>(br); }