10 #include <type_traits>
25 qDebug () << Q_FUNC_INFO;
29 void TypeGetterTest::testArgType ()
31 const auto f = [] (int,
const double) {};
32 static_assert (std::is_same_v<
ArgType_t<decltype (
f), 0>,
int>);
33 static_assert (std::is_same_v<
ArgType_t<decltype (
f), 1>,
double>);
36 void TypeGetterTest::testArgTypeRef ()
38 const auto f = [] (
int&,
const double&) {};
39 static_assert (std::is_same_v<
ArgType_t<decltype (
f), 0>,
int&>);
40 static_assert (std::is_same_v<
ArgType_t<decltype (
f), 1>,
const double&>);
43 void TypeGetterTest::testArgTypeRvalueRef ()
45 const auto f = [] (
int&&,
const double&&) {};
46 static_assert (std::is_same_v<
ArgType_t<decltype (
f), 0>,
int&&>);
47 static_assert (std::is_same_v<
ArgType_t<decltype (
f), 1>,
const double&&>);
50 void TypeGetterTest::testRetType ()
52 const auto f = [] (
int val,
const double) {
return val; };
53 static_assert (std::is_same_v<
RetType_t<decltype (
f)>,
int>);
56 void TypeGetterTest::testRetTypeVoid ()
59 static_assert (std::is_same_v<
RetType_t<decltype (
f)>,
void>);
62 void TypeGetterTest::testRetTypeRef ()
65 const auto f = [&x] (int,
const double) ->
int& {
return x; };
66 static_assert (std::is_same_v<
RetType_t<decltype (
f)>,
int&>);
69 void TypeGetterTest::testRetTypeConstRef ()
72 const auto f = [&x] (int,
const double) ->
const int& {
return x; };
73 static_assert (std::is_same_v<
RetType_t<decltype (
f)>,
const int&>);