28 #ifndef INCLUDED_MDDS_GLOBAL_HPP
29 #define INCLUDED_MDDS_GLOBAL_HPP
35 #include <type_traits>
47 #define MDDS_ASCII(literal) literal, sizeof(literal)-1
55 #define MDDS_N_ELEMENTS(name) sizeof(name)/sizeof(name[0])
58 #define MDDS_DEPRECATED __attribute__ ((deprecated))
59 #elif defined(_MSC_VER)
60 #define MDDS_DEPRECATED __declspec(deprecated)
62 #define MDDS_DEPRECATED
65 #ifndef MDDS_LOOP_UNROLLING
66 #define MDDS_LOOP_UNROLLING 1
69 #ifndef MDDS_USE_OPENMP
70 #define MDDS_USE_OPENMP 0
81 virtual const char* what()
const throw()
113 template<
typename T,
typename ...Args>
114 std::unique_ptr<T> make_unique(Args&& ...args)
116 return std::unique_ptr<T>(
new T(std::forward<Args>(args)...));
120 using bool_constant = std::integral_constant<bool, B>;
122 template <
typename T>
128 template <
typename U>
static y_type test(
typename U::value_type);
129 template <
typename U>
static n_type test(...);
132 static constexpr
bool value =
sizeof(test<T>(0)) ==
sizeof(y_type);
135 template<
typename _T,
typename _IsConst>
138 template<
typename _T>
141 using type =
typename std::add_const<_T>::type;
144 template<
typename _T>
150 template<
typename _T,
bool _Const>
153 template<
typename _T,
typename _IsConst>
156 template<
typename _T>
159 using type =
typename _T::const_iterator;
162 template<
typename _T>
165 using type =
typename _T::iterator;