JXXON object mapper library
Less.h
1 //
2 // Copyright (C) 2018 Dr. Michael Steffens
3 //
4 // SPDX-License-Identifier: BSL-1.0
5 //
6 
7 
8 #ifndef JXXON_Less_INCLUDED
9 #define JXXON_Less_INCLUDED
10 
11 #include "JXXON/IsSharedPtr.h"
12 #include <functional>
13 
14 namespace JXXON {
15 
16 template<typename T, typename Enable = void>
17 struct Less;
18 
20 template<typename T>
21 struct Less<T, typename std::enable_if<!IsSharedPtr<T>::value>::type>
22 {
23  bool operator()(const T& lhs, const T& rhs) const
24  {
25  return std::less<T>()(lhs, rhs);
26  }
27 };
28 
30 template<typename T>
31 struct Less<T, typename std::enable_if<IsSharedPtr<T>::value>::type>
32 {
33  bool operator()(const T& lhs, const T& rhs) const
34  {
35  return lhs && rhs ? std::less<typename T::element_type>()(*lhs, *rhs) : lhs || rhs;
36  }
37 };
38 
39 } // namespace JXXON
40 
41 #endif // JXXON_Less_INCLUDED
Definition: Less.h:17
JXXON root namespace.
Definition: Deque.h:14