Stride Reference Manual  1.0
util/unipar/utils.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <utility>
4 #include <type_traits>
5 
6 namespace unipar {
7 namespace utils {
8 
9 // Taken from http://stackoverflow.com/a/1953137/2678118
10 template<bool, typename T1, typename T2>
11 struct is_cond {
12  typedef T1 type;
13 };
14 
15 template<typename T1, typename T2>
16 struct is_cond<false, T1, T2> {
17  typedef T2 type;
18 };
19 
20 template<typename T1, typename T2>
21 struct largest {
22  typedef typename is_cond<(sizeof(T1) > sizeof(T2)), T1, T2>::type type;
23 };
24 
25 template<typename T1, typename T2, typename T3>
26 struct largest3 {
27  typedef typename is_cond<(sizeof(T1) > sizeof(T2)), T1, T2>::type _type_temp;
28  typedef typename is_cond<(sizeof(_type_temp) > sizeof(T3)), _type_temp, T3>::type type;
29 };
30 
31 
32 }
33 }
is_cond<(sizeof(T1) > sizeof(T2)), T1, T2 >::type _type_temp
Unified Parallelisation.
Definition: dummy.h:7
is_cond<(sizeof(_type_temp) > sizeof(T3)), _type_temp, T3 >::type type
is_cond<(sizeof(T1) > sizeof(T2)), T1, T2 >::type type