32#ifndef _QX_IS_CONTAINER_BASE_OF_H_
33#define _QX_IS_CONTAINER_BASE_OF_H_
41#define qx_container_base_of_test_0() (sizeof(qx::trait::is_container_base_of<B, D>::removeContainer(b, d)) == sizeof(char))
42#define qx_container_base_of_test_1() (sizeof(qx::trait::is_container_base_of<B, D>::removeContainer((* b_std_vector), d)) == sizeof(char))
43#define qx_container_base_of_test_2() (sizeof(qx::trait::is_container_base_of<B, D>::removeContainer((* b_std_list), d)) == sizeof(char))
44#define qx_container_base_of_test_3() (sizeof(qx::trait::is_container_base_of<B, D>::removeContainer((* b_std_set), d)) == sizeof(char))
45#define qx_container_base_of_test_4() (sizeof(qx::trait::is_container_base_of<B, D>::removeContainer((* b_qt_vector), d)) == sizeof(char))
46#define qx_container_base_of_test_5() (sizeof(qx::trait::is_container_base_of<B, D>::removeContainer((* b_qt_list), d)) == sizeof(char))
47#define qx_container_base_of_test_6() (sizeof(qx::trait::is_container_base_of<B, D>::removeContainer((* b_qt_set), d)) == sizeof(char))
48#define qx_container_base_of_test_7() (sizeof(qx::trait::is_container_base_of<B, D>::removeContainer((* b_qt_linked_list), d)) == sizeof(char))
49#define qx_container_base_of_test_8() (sizeof(qx::trait::is_container_base_of<B, D>::removeContainer((* b_boost_unordered_set), d)) == sizeof(char))
50#define qx_container_base_of_test_9() (sizeof(qx::trait::is_container_base_of<B, D>::removeContainer((* b_boost_unordered_multi_set), d)) == sizeof(char))
52#define qx_container_base_of_test_10() (sizeof(qx::trait::is_container_base_of<B, D>::removeContainer((* b_std_unordered_set), d)) == sizeof(char))
53#define qx_container_base_of_test_11() (sizeof(qx::trait::is_container_base_of<B, D>::removeContainer((* b_std_unordered_multi_set), d)) == sizeof(char))
55#define qx_container_base_of_all_test() \
56qx_container_base_of_test_1() || qx_container_base_of_test_2() || qx_container_base_of_test_3() || \
57qx_container_base_of_test_4() || qx_container_base_of_test_5() || qx_container_base_of_test_6() || \
58qx_container_base_of_test_7() || qx_container_base_of_test_8() || qx_container_base_of_test_9() || \
59qx_container_base_of_test_10() || qx_container_base_of_test_11()
64template <
typename B,
typename D>
70 template <
typename V,
typename W>
71 static typename std::conditional<std::is_base_of<V, W>::value, char,
int>
::type removeContainer(
const std::vector<V> &,
const std::vector<W> &);
73 template <
typename V,
typename W>
74 static typename std::conditional<std::is_base_of<V, W>::value, char,
int>
::type removeContainer(
const std::list<V> &,
const std::list<W> &);
76 template <
typename V,
typename W>
77 static typename std::conditional<std::is_base_of<V, W>::value, char,
int>
::type removeContainer(
const std::set<V> &,
const std::set<W> &);
79#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
80 template <
typename V,
typename W>
81 static typename std::conditional<std::is_base_of<V, W>::value, char,
int>
::type removeContainer(
const QVector<V> &,
const QVector<W> &);
84 template <
typename V,
typename W>
85 static typename std::conditional<std::is_base_of<V, W>::value, char,
int>
::type removeContainer(
const QList<V> &,
const QList<W> &);
87 template <
typename V,
typename W>
88 static typename std::conditional<std::is_base_of<V, W>::value, char,
int>
::type removeContainer(
const QSet<V> &,
const QSet<W> &);
90#if (QT_VERSION < QT_VERSION_CHECK(5, 15, 0))
91 template <
typename V,
typename W>
92 static typename std::conditional<std::is_base_of<V, W>::value, char,
int>
::type removeContainer(
const QLinkedList<V> &,
const QLinkedList<W> &);
95#ifdef _QX_ENABLE_BOOST
97 template <
typename V,
typename W>
98 static typename std::conditional<std::is_base_of<V, W>::value, char,
int>
::type removeContainer(
const boost::unordered_set<V> &,
const boost::unordered_set<W> &);
100 template <
typename V,
typename W>
101 static typename std::conditional<std::is_base_of<V, W>::value, char,
int>
::type removeContainer(
const boost::unordered_multiset<V> &,
const boost::unordered_multiset<W> &);
105 template <
typename V,
typename W>
106 static typename std::conditional<std::is_base_of<V, W>::value, char,
int>
::type removeContainer(
const std::unordered_set<V> &,
const std::unordered_set<W> &);
108 template <
typename V,
typename W>
109 static typename std::conditional<std::is_base_of<V, W>::value, char,
int>
::type removeContainer(
const std::unordered_multiset<V> &,
const std::unordered_multiset<W> &);
122#if (QT_VERSION < QT_VERSION_CHECK(5, 15, 0))
123 static QLinkedList<B> * b_qt_linked_list;
126#ifdef _QX_ENABLE_BOOST
145 typedef typename std::conditional<qx::trait::is_container_base_of<B, D>::value, std::true_type, std::false_type>
::type type;
std::conditional< qx::trait::is_container_base_of< B, D >::value, std::true_type, std::false_type >::type type
static std::conditional< std::is_base_of< V, W >::value, char, int >::type removeContainer(const QList< V > &, const QList< W > &)
static int removeContainer(...)
static std::conditional< std::is_base_of< V, W >::value, char, int >::type removeContainer(const boost::unordered_set< V > &, const boost::unordered_set< W > &)
static std::list< B > * b_std_list
static std::conditional< std::is_base_of< V, W >::value, char, int >::type removeContainer(const boost::unordered_multiset< V > &, const boost::unordered_multiset< W > &)
static std::conditional< std::is_base_of< V, W >::value, char, int >::type removeContainer(const std::set< V > &, const std::set< W > &)
static std::conditional< std::is_base_of< V, W >::value, char, int >::type removeContainer(const std::unordered_multiset< V > &, const std::unordered_multiset< W > &)
static QVector< B > * b_qt_vector
static std::conditional< std::is_base_of< V, W >::value, char, int >::type removeContainer(const std::vector< V > &, const std::vector< W > &)
static boost::unordered_set< B > * b_boost_unordered_set
static QList< B > * b_qt_list
static std::set< B > * b_std_set
static std::unordered_multiset< B > * b_std_unordered_multi_set
static boost::unordered_multiset< B > * b_boost_unordered_multi_set
static std::unordered_set< B > * b_std_unordered_set
static std::conditional< std::is_base_of< V, W >::value, char, int >::type removeContainer(const QSet< V > &, const QSet< W > &)
static QSet< B > * b_qt_set
static std::vector< B > * b_std_vector
static std::conditional< std::is_base_of< V, W >::value, char, int >::type removeContainer(const std::unordered_set< V > &, const std::unordered_set< W > &)
static std::conditional< std::is_base_of< V, W >::value, char, int >::type removeContainer(const std::list< V > &, const std::list< W > &)
qx::trait::is_container<T>::value : return true if T is a container from stl, boost,...
#define qx_container_base_of_test_0()
#define qx_container_base_of_all_test()
Root namespace for all QxOrm library features.
qx::trait::is_container<T>::value : return true if T is a container from stl, boost,...