Skip to content

Commit 7efe143

Browse files
committed
src/Common/object_type_traits.h: Some templates reimplemented via stl.
Fixed compilation with gcc.
1 parent 799cef6 commit 7efe143

File tree

1 file changed

+5
-29
lines changed

1 file changed

+5
-29
lines changed

src/Common/object_type_traits.h

Lines changed: 5 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
#define object_type_traits_h_included
1010
#pragma once
1111

12+
#include <type_traits>
13+
1214
//#define USE_BOOST
1315

1416
#ifdef USE_BOOST
@@ -28,32 +30,12 @@
2830

2931
template <bool expression, typename T1, typename T2>
3032
struct _if {
31-
template <bool>
32-
struct selector {
33-
typedef T2 result;
34-
};
35-
36-
template <>
37-
struct selector<true> {
38-
typedef T1 result;
39-
};
40-
41-
typedef typename selector<expression>::result result;
33+
using result = typename std::conditional<expression, T1, T2>::type;
4234
};
4335

4436
template <typename T1, typename T2>
4537
struct is_type {
46-
template <typename T>
47-
struct selector {
48-
enum { value = false, };
49-
};
50-
51-
template <>
52-
struct selector<T1> {
53-
enum { value = true, };
54-
};
55-
56-
enum { value = selector<T2>::value, };
38+
enum { value = std::is_same<T1,T2>::value, };
5739
};
5840

5941
template <typename T>
@@ -102,13 +84,7 @@
10284

10385
template <typename T>
10486
struct is_void {
105-
template <typename P>
106-
struct select {enum { value = false}; };
107-
108-
template <>
109-
struct select<void> {enum { value = true}; };
110-
111-
enum { value = select<T>::value};
87+
enum { value = std::is_same<void,T>::value };
11288
};
11389

11490
template <typename T> struct is_const{

0 commit comments

Comments
 (0)