qt6-bb10/src/concurrent/qtconcurrentcompilertest.h

42 lines
1.0 KiB
C++

// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#ifndef QTCONCURRENT_COMPILERTEST_H
#define QTCONCURRENT_COMPILERTEST_H
#include <QtConcurrent/qtconcurrent_global.h>
#ifndef QT_NO_CONCURRENT
QT_BEGIN_NAMESPACE
namespace QtPrivate {
template <class T, typename = void>
struct IsIterable : std::false_type {};
template <class T>
struct IsIterable<T, std::void_t<decltype(std::declval<T>().begin()),
decltype(std::declval<T>().end())>>
: std::true_type
{ };
template <class T>
inline constexpr bool IsIterableValue = IsIterable<T>::value;
template <class T, typename = void>
struct IsDereferenceable : std::false_type {};
template <class T>
struct IsDereferenceable<T, std::void_t<decltype(*std::declval<T>())>>
: std::true_type
{ };
template <class T>
inline constexpr bool IsDereferenceableValue = IsDereferenceable<T>::value;
}
QT_END_NAMESPACE
#endif // QT_NO_CONCURRENT
#endif