File indexing completed on 2025-02-21 10:09:50
0001
0002
0003
0004 #ifndef QTCONCURRENT_COMPILERTEST_H
0005 #define QTCONCURRENT_COMPILERTEST_H
0006
0007 #include <QtConcurrent/qtconcurrent_global.h>
0008
0009 #ifndef QT_NO_CONCURRENT
0010
0011 QT_BEGIN_NAMESPACE
0012
0013 namespace QtPrivate {
0014
0015 template <class T, typename = void>
0016 struct IsIterable : std::false_type {};
0017 template <class T>
0018 struct IsIterable<T, std::void_t<decltype(std::declval<T>().begin()),
0019 decltype(std::declval<T>().end())>>
0020 : std::true_type
0021 { };
0022
0023 template <class T>
0024 inline constexpr bool IsIterableValue = IsIterable<T>::value;
0025
0026 template <class T, typename = void>
0027 struct IsDereferenceable : std::false_type {};
0028 template <class T>
0029 struct IsDereferenceable<T, std::void_t<decltype(*std::declval<T>())>>
0030 : std::true_type
0031 { };
0032
0033 template <class T>
0034 inline constexpr bool IsDereferenceableValue = IsDereferenceable<T>::value;
0035 }
0036
0037 QT_END_NAMESPACE
0038
0039 #endif
0040
0041 #endif