16 #include "CLHEP/Utility/noncopyable.h"
17 #include "CLHEP/Utility/type_traits.h"
22 using namespace CLHEP;
33 UDT& operator=(
const UDT&);
43 typedef int(*
f2)(int);
44 typedef int(*
f3)(int, bool);
61 #if ! defined(_MSC_VER)
121 ~nothrow_construct_UDT() { };
153 {
operator void*(){
return this;} };
157 operator int*(){
return &i;}
178 virtual void foo() = 0;
179 virtual void foo2() = 0;
185 virtual void foo() = 0;
186 virtual void foo2() = 0;
190 {
virtual void foo3() = 0; };
192 struct incomplete_type;
197 virtual void method();
204 {
virtual void method(); };
216 typedef
void foo3_t(
int&,
bool,
int,
int);
217 typedef
void foo4_t(
int,
bool,
int*,
int[],
int,
int,
int,
int,
int);
221 trivial_except_construct();
256 {
operator char*()
const; };
264 #define claim_void(Type) (is_void<Type>::value)
265 #define has_void_type(Type) assert(claim_void(Type))
266 #define has_nonvoid_type(Type) assert(!claim_void(Type))
283 #define claim_integral(Type) (is_integral<Type>::value)
284 #define has_integral_type(Type) assert(claim_integral(Type))
285 #define has_nonintegral_type(Type) assert(!claim_integral(Type))
349 #define claim_floating(Type) (is_floating_point<Type>::value)
350 #define has_floating_type(Type) assert(claim_floating(Type))
351 #define has_nonfloating_type(Type) assert(!claim_floating(Type))
386 #define claim_array(Type) (is_array<Type>::value)
387 #define has_array_type(Type) assert(claim_array(Type))
388 #define has_nonarray_type(Type) assert(!claim_array(Type))
411 #define claim_ptr(Type) (is_pointer<Type>::value)
412 #define has_ptr_type(Type) assert(claim_ptr(Type))
413 #define has_nonptr_type(Type) assert(!claim_ptr(Type))
448 #define claim_lref(Type) (is_lvalue_reference<Type>::value)
449 #define has_lref_type(Type) assert(claim_lref(Type))
450 #define has_nonlref_type(Type) assert(!claim_lref(Type))
452 #define claim_ref(Type) (is_reference<Type>::value)
453 #define has_ref_type(Type) assert(claim_ref(Type))
454 #define has_nonref_type(Type) assert(!claim_ref(Type))
456 #define lref(Type) has_lref_type(Type); has_ref_type(Type);
457 #define nonref(Type) has_nonlref_type(Type); has_nonref_type(Type);
461 lref(
volatile int &);
462 lref(
const volatile int &);
464 #if ! defined(_MSC_VER)
477 nonref(
const volatile int [2]);
484 #define claim_mbrobjptr(Type) (is_member_object_pointer<Type>::value)
485 #define has_mbrobjptr_type(Type) assert(claim_mbrobjptr(Type))
486 #define has_nonmbrobjptr_type(Type) assert(!claim_mbrobjptr(Type))
503 #define claim_mbrfctnptr(Type) (is_member_function_pointer<Type>::value)
504 #define has_mbrfctnptr_type(Type) assert(claim_mbrfctnptr(Type))
505 #define has_nonmbrfctnptr_type(Type) assert(!claim_mbrfctnptr(Type))
526 #define claim_enum(Type) (is_enum<Type>::value)
527 #define has_enum_type(Type) assert(claim_enum(Type))
528 #define has_nonenum_type(Type) assert(!claim_enum(Type))
bool operator==(const nothrow_construct_UDT &) const
bool operator==(const nothrow_assign_UDT &) const
#define has_nonenum_type(Type)
nothrow_copy_UDT & operator=(const nothrow_copy_UDT &)
#define has_nonvoid_type(Type)
void foo2_t(int &, double)
empty_UDT(const empty_UDT &)
bool operator==(const nothrow_copy_UDT &) const
bool operator==(const empty_POD_UDT &) const
nothrow_construct_UDT & operator=(const nothrow_construct_UDT &)
#define has_array_type(Type)
nothrow_assign_UDT & operator=(const nothrow_assign_UDT &)
#define has_enum_type(Type)
void foo3_t(int &, bool, int, int)
empty_UDT & operator=(const empty_UDT &)
void foo4_t(int, bool, int *, int[], int, int, int, int, int)
int(UDT::* mf4)(int, float)
#define has_nonptr_type(Type)
#define has_nonintegral_type(Type)
bool operator==(const empty_UDT &) const
#define has_ptr_type(Type)
#define has_mbrfctnptr_type(Type)
#define has_nonfloating_type(Type)
#define has_integral_type(Type)
#define has_void_type(Type)
#define has_nonmbrfctnptr_type(Type)
#define has_nonarray_type(Type)
#define has_floating_type(Type)
int(UDT::* cmf)(int) const
#define has_mbrobjptr_type(Type)
#define has_nonmbrobjptr_type(Type)