vSMC
vSMC: Scalable Monte Carlo
Classes | Namespaces | Macros
traits.hpp File Reference
#include <vsmc/internal/config.hpp>
#include <vsmc/internal/defines.hpp>
#include <vsmc/internal/forward.hpp>
#include <vsmc/cxx11/type_traits.hpp>

Go to the source code of this file.

Classes

struct  vsmc::traits::ConstSingleParticleBaseTypeTrait< T >
 ConstSingleParticle base class trait. More...
 
struct  vsmc::traits::ConstSingleParticleBaseTypeTrait< T >
 ConstSingleParticle base class trait. More...
 
struct  vsmc::traits::DimTrait< Dim >
 Dimension trait for StateMatrix and StateCL (fixed dimension) More...
 
struct  vsmc::traits::DimTrait< Dynamic >
 Dimension trait for StateMatrix and StateCL (dynamic dimension) More...
 
struct  vsmc::traits::internal::ConstSingleParticleBaseTypeDispatch< T, bool >
 
struct  vsmc::traits::internal::ConstSingleParticleBaseTypeDispatch< T, false >
 
struct  vsmc::traits::internal::ConstSingleParticleBaseTypeDispatch< T, true >
 
struct  vsmc::traits::internal::HasConstSingleParticleBaseType< T >
 
struct  vsmc::traits::internal::HasConstSingleParticleBaseTypeImpl< T >
 
struct  vsmc::traits::internal::HasSingleParticleBaseType< T >
 
struct  vsmc::traits::internal::HasSingleParticleBaseTypeImpl< T >
 
struct  vsmc::traits::internal::HasSizeType< T >
 
struct  vsmc::traits::internal::HasSizeTypeImpl< T >
 
struct  vsmc::traits::internal::HasWeightSetType< T >
 
struct  vsmc::traits::internal::HasWeightSetTypeImpl< T >
 
struct  vsmc::traits::internal::SingleParticleBaseTypeDispatch< T, bool >
 
struct  vsmc::traits::internal::SingleParticleBaseTypeDispatch< T, false >
 
struct  vsmc::traits::internal::SingleParticleBaseTypeDispatch< T, true >
 
struct  vsmc::traits::internal::SizeTypeDispatch< T, bool >
 
struct  vsmc::traits::internal::SizeTypeDispatch< T, false >
 
struct  vsmc::traits::internal::SizeTypeDispatch< T, true >
 
struct  vsmc::traits::internal::WeightSetTypeDispatch< T, bool >
 
struct  vsmc::traits::internal::WeightSetTypeDispatch< T, false >
 
struct  vsmc::traits::internal::WeightSetTypeDispatch< T, true >
 
struct  vsmc::traits::OMPSizeTypeTrait< T >
 
struct  vsmc::traits::SIMDTrait< SIMD >
 SIMD traits. More...
 
struct  vsmc::traits::SIMDTrait< AVX >
 AVX traits. More...
 
struct  vsmc::traits::SIMDTrait< AVX2 >
 AVX2 traits. More...
 
struct  vsmc::traits::SIMDTrait< SSE2 >
 SSE2 traits. More...
 
struct  vsmc::traits::SIMDTrait< SSE3 >
 SSE3 traits. More...
 
struct  vsmc::traits::SIMDTrait< SSE4_1 >
 SSE4_1 traits. More...
 
struct  vsmc::traits::SIMDTrait< SSE4_2 >
 SSE4_2 traits. More...
 
struct  vsmc::traits::SIMDTrait< SSSE3 >
 SSSE3 traits. More...
 
struct  vsmc::traits::SingleParticleBaseTypeTrait< T >
 SingleParticle base class trait. More...
 
struct  vsmc::traits::SingleParticleBaseTypeTrait< T >
 SingleParticle base class trait. More...
 
struct  vsmc::traits::SizeTypeTrait< T >
 Particle::size_type etc., traits. More...
 
struct  vsmc::traits::SizeTypeTrait< T >
 Particle::size_type etc., traits. More...
 
struct  vsmc::traits::WeightSetTypeTrait< T >
 Particle::weight_set_type trait. More...
 
struct  vsmc::traits::WeightSetTypeTrait< T >
 Particle::weight_set_type trait. More...
 

Namespaces

 vsmc
 
 vsmc::traits
 
 vsmc::traits::internal
 

Macros

#define VSMC_DEFINE_METHOD_CHECKER(name, RT, Args)
 
#define VSMC_DEFINE_TYPE_DISPATCH_TRAIT(Outer, Inner, Default)
 
#define VSMC_DEFINE_TYPE_TEMPLATE_DISPATCH_TRAIT(Outer, Inner, Default)
 

Macro Definition Documentation

#define VSMC_DEFINE_METHOD_CHECKER (   name,
  RT,
  Args 
)
Value:
template <typename U> \
struct has_##name##_impl_ \
{ \
private : \
\
struct char2 {char c1; char c2;}; \
template <typename V, RT (V::*) Args> struct sfinae_; \
template <typename V, RT (V::*) Args const> struct sfinae_const_; \
template <typename V, RT (*) Args> struct sfinae_static_; \
template <typename V> static char test (sfinae_<V, &V::name> *); \
template <typename V> static char test (sfinae_const_<V, &V::name> *); \
template <typename V> static char test (sfinae_static_<V, &V::name> *); \
template <typename V> static char2 test (...); \
\
public : \
\
static VSMC_CONSTEXPR const bool value = \
sizeof(test<U>(VSMC_NULLPTR)) == sizeof(char); \
}; \
\
template <typename U> struct has_##name##_ : \
public cxx11::integral_constant<bool, has_##name##_impl_<U>::value> {};
#define VSMC_CONSTEXPR
constexpr
Definition: defines.hpp:55
#define VSMC_NULLPTR
nullptr
Definition: defines.hpp:79

Definition at line 118 of file traits.hpp.

#define VSMC_DEFINE_TYPE_DISPATCH_TRAIT (   Outer,
  Inner,
  Default 
)

Definition at line 40 of file traits.hpp.

#define VSMC_DEFINE_TYPE_TEMPLATE_DISPATCH_TRAIT (   Outer,
  Inner,
  Default 
)

Definition at line 79 of file traits.hpp.