All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
IsSubvector.h
Go to the documentation of this file.
1 //=================================================================================================
33 //=================================================================================================
34 
35 #ifndef _BLAZE_MATH_TYPETRAITS_ISSUBVECTOR_H_
36 #define _BLAZE_MATH_TYPETRAITS_ISSUBVECTOR_H_
37 
38 
39 //*************************************************************************************************
40 // Includes
41 //*************************************************************************************************
42 
43 #include <boost/type_traits/is_base_of.hpp>
45 #include <blaze/util/FalseType.h>
46 #include <blaze/util/SelectType.h>
47 #include <blaze/util/TrueType.h>
49 
50 
51 namespace blaze {
52 
53 //=================================================================================================
54 //
55 // CLASS DEFINITION
56 //
57 //=================================================================================================
58 
59 //*************************************************************************************************
64 template< typename T >
65 struct IsSubvectorHelper
66 {
67  private:
68  //**********************************************************************************************
69  typedef typename RemoveCV<T>::Type T2;
70  //**********************************************************************************************
71 
72  public:
73  //**********************************************************************************************
74  enum { value = boost::is_base_of<Subvector,T2>::value && !boost::is_base_of<T2,Subvector>::value };
75  typedef typename SelectType<value,TrueType,FalseType>::Type Type;
76  //**********************************************************************************************
77 };
79 //*************************************************************************************************
80 
81 
82 //*************************************************************************************************
109 template< typename T >
110 struct IsSubvector : public IsSubvectorHelper<T>::Type
111 {
112  public:
113  //**********************************************************************************************
115  enum { value = IsSubvectorHelper<T>::value };
116  typedef typename IsSubvectorHelper<T>::Type Type;
118  //**********************************************************************************************
119 };
120 //*************************************************************************************************
121 
122 } // namespace blaze
123 
124 #endif
Header file for the FalseType type/value trait base class.
Header file for the RemoveCV type trait.
Header file for the Subvector base class.
Header file for the SelectType class template.
Compile time check for subvectors.This type trait tests whether or not the given template parameter i...
Definition: IsSubvector.h:110
Header file for the TrueType type/value trait base class.