@@ -18,23 +18,14 @@ struct CLoader
1818 struct CHelper1
1919 {
2020 template <bool a>
21- #if defined(WINDOWS)
22- static void load_data (T& data, M& stream, const P& /* p*/ )
23- #elif defined(LINUX)
24- static void load_data (std::enable_if_t <a, T&> data, M& stream, const P& /* p*/ )
25- #endif
21+ static void load_data (std::enable_if_t <!a, T&> data, M& stream, const P& /* p*/ )
2622 {
2723 static_assert (!std::is_polymorphic<T>::value, " Cannot load polymorphic classes as binary data." );
2824 stream.r (&data, sizeof (T));
2925 }
3026
31- #if defined(WINDOWS)
32- template <>
33- static void load_data<true >(T& data, M& stream, const P& /* p*/ )
34- #elif defined(LINUX)
3527 template <bool a>
36- static void load_data (std::enable_if_t <!a, T&> data, M& stream, const P& /* p*/ )
37- #endif
28+ static void load_data (std::enable_if_t <a, T&> data, M& stream, const P& /* p*/ )
3829 {
3930 T* data1 = const_cast <T*>(&data);
4031 data1->load (stream);
@@ -45,22 +36,13 @@ struct CLoader
4536 struct CHelper
4637 {
4738 template <bool pointer>
48- #if defined(WINDOWS)
49- static void load_data (T& data, M& stream, const P& p)
50- #elif defined(LINUX)
51- static void load_data (std::enable_if_t <pointer, T&> data, M& stream, const P& p)
52- #endif
39+ static void load_data (std::enable_if_t <!pointer, T&> data, M& stream, const P& p)
5340 {
5441 CHelper1<T>::load_data<object_type_traits::is_base_and_derived<ISerializable, T>::value>(data, stream, p);
5542 }
5643
57- #if defined(WINDOWS)
58- template <>
59- static void load_data<true >(T& data, M& stream, const P& p)
60- #elif defined(LINUX)
6144 template <bool pointer>
62- static void load_data (std::enable_if_t <!pointer, T&> data, M& stream, const P& p)
63- #endif
45+ static void load_data (std::enable_if_t <pointer, T&> data, M& stream, const P& p)
6446 {
6547 CLoader<M, P>::load_data (*(data = new typename object_type_traits::remove_pointer<T>::type ()), stream, p);
6648 }
@@ -94,24 +76,14 @@ struct CLoader
9476 template <typename T1, typename T2>
9577 struct add_helper
9678 {
97- #if defined(WINDOWS)
98- template <bool >
99- static void add (T1& data, T2& value)
100- #elif defined(LINUX)
10179 template <bool a>
102- static void add (std::enable_if_t <a, T1&> data, T2& value)
103- #endif
80+ static void add (std::enable_if_t <!a, T1&> data, T2& value)
10481 {
10582 data.push_back (value);
10683 }
10784
108- #if defined(WINDOWS)
109- template <>
110- static void add<true >(T1& data, T2& value)
111- #elif defined(LINUX)
11285 template <bool a>
113- static void add (std::enable_if_t <!a, T1&> data, T2& value)
114- #endif
86+ static void add (std::enable_if_t <a, T1&> data, T2& value)
11587 {
11688 data.insert (value);
11789 }
@@ -143,22 +115,13 @@ struct CLoader
143115 struct CHelper4
144116 {
145117 template <bool a>
146- #if defined(WINDOWS)
147- static void load_data (T& data, M& stream, const P& p)
148- #elif defined(LINUX)
149- static void load_data (std::enable_if_t <a, T&> data, M& stream, const P& p)
150- #endif
118+ static void load_data (std::enable_if_t <!a, T&> data, M& stream, const P& p)
151119 {
152120 CHelper<T>::load_data<object_type_traits::is_pointer<T>::value>(data, stream, p);
153121 }
154122
155- #if defined(WINDOWS)
156- template <>
157- static void load_data<true >(T& data, M& stream, const P& p)
158- #elif defined(LINUX)
159123 template <bool a>
160- static void load_data (std::enable_if_t <!a, T&> data, M& stream, const P& p)
161- #endif
124+ static void load_data (std::enable_if_t <a, T&> data, M& stream, const P& p)
162125 {
163126 CHelper3::load_data (data, stream, p);
164127 }
@@ -307,7 +270,7 @@ struct CLoader
307270 template <typename T>
308271 static void load_data (T& data, M& stream, const P& p)
309272 {
310- CHelper4<T>::load_data<object_type_traits::is_stl_container<T>::value>(data, stream, p);
273+ CHelper4<T>::template load_data<object_type_traits::is_stl_container<T>::value>(data, stream, p);
311274 }
312275};
313276
0 commit comments