PeriDyno 1.0.0
Loading...
Searching...
No Matches
type_traits.h
Go to the documentation of this file.
1#ifndef TYPE_TRAITS_H
2#define TYPE_TRAITS_H
3
4#include "Platform.h"
5
6namespace dyno
7{
8
9 template <typename T> struct remove_reference { typedef T type; };
10
11 template <typename T> struct remove_reference<T&> { typedef T type; };
12
13 template <typename T> struct remove_reference<T&&> { typedef T type; };
14
15
16 template <typename T>
17 DYN_FUNC constexpr T&& forward(typename dyno::remove_reference<T>::type& x) noexcept
18 {
19 return static_cast<T&&>(x);
20 }
21
22
23 template <typename T>
24 DYN_FUNC constexpr T&& forward(typename dyno::remove_reference<T>::type&& x) noexcept
25 {
26 // should promise T isn't lvalue reference
27 return static_cast<T&&>(x);
28 }
29
30 template <typename T>
31 struct iterator_traits {};
32
33 typedef long long ptrDiff_t;
34
35 template <typename T>
37 {
38 typedef T value_type;
40 typedef T* pointer;
41 typedef T& reference;
42 };
43
44 template <typename T>
45 struct iterator_traits<const T*>
46 {
47 typedef T value_type;
49 typedef const T* pointer;
50 typedef const T& reference;
51 };
52}
53
54
55#endif // TYPE_TRAITS_H
#define T(t)
This is an implementation of AdditiveCCD based on peridyno.
Definition Array.h:25
DYN_FUNC constexpr T && forward(typename dyno::remove_reference< T >::type &x) noexcept
Definition type_traits.h:17
long long ptrDiff_t
Definition type_traits.h:33