Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-02-21 10:09:50

0001 // Copyright (C) 2016 The Qt Company Ltd.
0002 // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
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 // QT_NO_CONCURRENT
0040 
0041 #endif