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 | |