|
Boost : |
From: John Maddock (john_at_[hidden])
Date: 2004-06-17 04:58:32
> some code:
>
> template <typename DerivedT>
> class A
> {
> BOOST_STATIC_ASSERT((boost::is_convertible<A<DerivedT>*, B*>::value));
> [...]
> };
>
> class B : public A<B>
> {
> };
>
> I want to check if the template parameter really specifies a derived type.
> But the assert is always false.
> How can i solve this?
I think your code should be:
template <typename DerivedT>
class A
{
BOOST_STATIC_ASSERT((::boost::is_convertible<DerivedT*,
A<DerivedT>*>::value));
// this should work as well:
BOOST_STATIC_ASSERT((::boost::is_base_and_derived<A<DerivedT>,
DerivedT>::value));
};
class B : public A<B>
{
};
However, the static asserts still always get triggered, and I'm not sure
why: any language lawyers understand this?
John.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk