| 1 | // Copyright (C) 2023 The Qt Company Ltd. |
| 2 | // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only |
| 3 | |
| 4 | #include <QtCore/q23utility.h> |
| 5 | |
| 6 | QT_BEGIN_NAMESPACE |
| 7 | |
| 8 | #define CHECK2(cvref_in, cvref_out) \ |
| 9 | static_assert(std::is_same_v< \ |
| 10 | decltype(q23::forward_like<int cvref_in >(std::declval<long&>())), \ |
| 11 | long cvref_out \ |
| 12 | >, "oops: cvref '" #cvref_in "' doesn't work") \ |
| 13 | /* end */ |
| 14 | #define CHECK(cvref) CHECK2(cvref, cvref) |
| 15 | CHECK2(/**/, &&); |
| 16 | CHECK(&); |
| 17 | CHECK(&&); |
| 18 | CHECK2(const, const &&); |
| 19 | CHECK(const &); |
| 20 | CHECK(const &&); |
| 21 | // volatile is not supported |
| 22 | #undef CHECK |
| 23 | #undef CHECK2 |
| 24 | |
| 25 | QT_END_NAMESPACE |
| 26 | |