31#ifndef __FASTJET_INTERNAL_IS_BASE_HH__
32#define __FASTJET_INTERNAL_IS_BASE_HH__
34#include "fastjet/internal/numconsts.hh"
36FASTJET_BEGIN_NAMESPACE
62template<
typename T, T _t>
64 static const T value = _t;
70template<
typename T, T _t>
81typedef char (&__yes_type)[1];
82typedef char (&__no_type) [2];
106template<
typename B,
typename D>
108#if !((_MSC_VER !=0 ) && (_MSC_VER == 1310))
109 template <
typename T>
110 static __yes_type check_sig(D
const volatile *, T);
112 static __yes_type check_sig(D
const volatile *,
long);
114 static __no_type check_sig(B
const volatile *,
int);
128template<
typename B,
typename D>
130#if ((_MSC_FULL_VER != 0) && (_MSC_FULL_VER >= 140050000))
132#pragma warning(disable:6334)
144#if !((_MSC_VER !=0 ) && (_MSC_VER == 1310))
145 operator B
const volatile *()
const;
147 operator B
const volatile *
const&()
const;
149 operator D
const volatile *();
153 static const bool value = ((
sizeof(B)!=0) &&
157#if ((_MSC_FULL_VER != 0) && (_MSC_FULL_VER >= 140050000))
165template<
class B,
class D>
B * cast_if_derived(D *d)
a little helper that returns a pointer to d of type B* if D is derived from B and NULL otherwise
integral_type< T, _t > type
a typedef for the whole structure
T value_type
a typedef for the type T