6#ifndef MIMICPP_TYPE_TRAITS_HPP
7#define MIMICPP_TYPE_TRAITS_HPP
19namespace mimicpp::detail
21 template <
typename Signature>
22 struct has_default_call_convention
23 :
public std::false_type
27 template <
typename Signature>
28 inline constexpr bool has_default_call_convention_v = has_default_call_convention<Signature>::value;
30 template <
typename Return,
typename... Params>
31 struct has_default_call_convention<Return(Params...)>
32 :
public std::true_type
36 template <
typename Return,
typename... Params>
37 struct has_default_call_convention<Return(Params..., ...)>
38 :
public std::true_type
42 template <
typename Return,
typename... Params>
43 struct has_default_call_convention<Return(Params...) noexcept>
44 :
public std::true_type
48 template <
typename Return,
typename... Params>
49 struct has_default_call_convention<Return(Params..., ...) noexcept>
50 :
public std::true_type
54 template <
typename Return,
typename... Params>
55 struct has_default_call_convention<Return(Params...) const>
56 :
public std::true_type
60 template <
typename Return,
typename... Params>
61 struct has_default_call_convention<Return(Params..., ...) const>
62 :
public std::true_type
66 template <
typename Return,
typename... Params>
67 struct has_default_call_convention<Return(Params...) const noexcept>
68 :
public std::true_type
72 template <
typename Return,
typename... Params>
73 struct has_default_call_convention<Return(Params..., ...) const noexcept>
74 :
public std::true_type
78 template <
typename Return,
typename... Params>
79 struct has_default_call_convention<Return(Params...)&>
80 :
public std::true_type
84 template <
typename Return,
typename... Params>
85 struct has_default_call_convention<Return(Params..., ...)&>
86 :
public std::true_type
90 template <
typename Return,
typename... Params>
91 struct has_default_call_convention<Return(Params...) &
noexcept>
92 :
public std::true_type
96 template <
typename Return,
typename... Params>
97 struct has_default_call_convention<Return(Params..., ...) &
noexcept>
98 :
public std::true_type
102 template <
typename Return,
typename... Params>
103 struct has_default_call_convention<Return(Params...) const&>
104 :
public std::true_type
108 template <
typename Return,
typename... Params>
109 struct has_default_call_convention<Return(Params..., ...) const&>
110 :
public std::true_type
114 template <
typename Return,
typename... Params>
115 struct has_default_call_convention<Return(Params...) const &
noexcept>
116 :
public std::true_type
120 template <
typename Return,
typename... Params>
121 struct has_default_call_convention<Return(Params..., ...) const &
noexcept>
122 :
public std::true_type
126 template <
typename Return,
typename... Params>
127 struct has_default_call_convention<Return(Params...) &&>
128 :
public std::true_type
132 template <
typename Return,
typename... Params>
133 struct has_default_call_convention<Return(Params..., ...) &&>
134 :
public std::true_type
138 template <
typename Return,
typename... Params>
139 struct has_default_call_convention<Return(Params...) &&
noexcept>
140 :
public std::true_type
144 template <
typename Return,
typename... Params>
145 struct has_default_call_convention<Return(Params..., ...) &&
noexcept>
146 :
public std::true_type
150 template <
typename Return,
typename... Params>
151 struct has_default_call_convention<Return(Params...) const&&>
152 :
public std::true_type
156 template <
typename Return,
typename... Params>
157 struct has_default_call_convention<Return(Params..., ...) const&&>
158 :
public std::true_type
162 template <
typename Return,
typename... Params>
163 struct has_default_call_convention<Return(Params...) const &&
noexcept>
164 :
public std::true_type
168 template <
typename Return,
typename... Params>
169 struct has_default_call_convention<Return(Params..., ...) const &&
noexcept>
170 :
public std::true_type
174 struct default_call_convention
191 template <
typename Signature>
207 template <has_default_call_convention Signature>
210 using type = detail::default_call_convention;
245 using tag_t = detail::default_call_convention;
247 template <
typename Signature>
250 template <
typename Signature>
253 template <
typename Derived,
typename Signature>
269 template <
typename Return,
typename... Params>
272 using type = Return(Params...) noexcept;
275 template <typename Return, typename... Params>
278 using type = Return(Params..., ...) noexcept;
281 template <typename Return, typename... Params>
284 using type = Return(Params...) noexcept;
287 template <typename Return, typename... Params>
290 using type = Return(Params..., ...) noexcept;
293 template <typename Return, typename... Params>
296 using type = Return(Params...) const noexcept;
299 template <typename Return, typename... Params>
302 using type = Return(Params..., ...) const noexcept;
305 template <typename Return, typename... Params>
308 using type = Return(Params...) const noexcept;
311 template <typename Return, typename... Params>
314 using type = Return(Params..., ...) const noexcept;
317 template <typename Return, typename... Params>
320 using type = Return(Params...) &
noexcept;
323 template <
typename Return,
typename... Params>
326 using type = Return(Params..., ...) &
noexcept;
329 template <
typename Return,
typename... Params>
332 using type = Return(Params...) &
noexcept;
335 template <
typename Return,
typename... Params>
338 using type = Return(Params..., ...) &
noexcept;
341 template <
typename Return,
typename... Params>
344 using type = Return(Params...) const& noexcept;
347 template <typename Return, typename... Params>
350 using type = Return(Params..., ...) const& noexcept;
353 template <typename Return, typename... Params>
356 using type = Return(Params...) const& noexcept;
359 template <typename Return, typename... Params>
362 using type = Return(Params..., ...) const& noexcept;
365 template <typename Return, typename... Params>
368 using type = Return(Params...) &&
noexcept;
371 template <
typename Return,
typename... Params>
374 using type = Return(Params..., ...) &&
noexcept;
377 template <
typename Return,
typename... Params>
380 using type = Return(Params...) &&
noexcept;
383 template <
typename Return,
typename... Params>
386 using type = Return(Params..., ...) &&
noexcept;
389 template <
typename Return,
typename... Params>
392 using type = Return(Params...) const&& noexcept;
395 template <typename Return, typename... Params>
398 using type = Return(Params..., ...) const&& noexcept;
401 template <typename Return, typename... Params>
404 using type = Return(Params...) const&& noexcept;
407 template <typename Return, typename... Params>
410 using type = Return(Params..., ...) const&& noexcept;
425 template <typename Signature>
444 template <
typename Signature>
450 typename call_convention_traits_t::template add_call_convention_t<
452 typename call_convention_traits_t::template remove_call_convention_t<Signature>>>;
455 template <
typename Return,
typename... Params>
458 using type = Return(Params...);
461 template <
typename Return,
typename... Params>
464 using type = Return(Params..., ...);
467 template <
typename Return,
typename... Params>
470 using type = Return(Params...);
473 template <
typename Return,
typename... Params>
476 using type = Return(Params..., ...);
479 template <
typename Return,
typename... Params>
482 using type = Return(Params...)
const;
485 template <
typename Return,
typename... Params>
488 using type = Return(Params..., ...)
const;
491 template <
typename Return,
typename... Params>
494 using type = Return(Params...)
const;
497 template <
typename Return,
typename... Params>
500 using type = Return(Params..., ...)
const;
503 template <
typename Return,
typename... Params>
506 using type = Return(Params...) &;
509 template <
typename Return,
typename... Params>
512 using type = Return(Params..., ...) &;
515 template <
typename Return,
typename... Params>
518 using type = Return(Params...) &;
521 template <
typename Return,
typename... Params>
524 using type = Return(Params..., ...) &;
527 template <
typename Return,
typename... Params>
530 using type = Return(Params...) const&;
533 template <typename Return, typename... Params>
536 using type = Return(Params..., ...) const&;
539 template <typename Return, typename... Params>
542 using type = Return(Params...) const&;
545 template <typename Return, typename... Params>
548 using type = Return(Params..., ...) const&;
551 template <typename Return, typename... Params>
554 using type = Return(Params...) &&;
557 template <
typename Return,
typename... Params>
560 using type = Return(Params..., ...) &&;
563 template <
typename Return,
typename... Params>
566 using type = Return(Params...) &&;
569 template <
typename Return,
typename... Params>
572 using type = Return(Params..., ...) &&;
575 template <
typename Return,
typename... Params>
578 using type = Return(Params...) const&&;
581 template <typename Return, typename... Params>
584 using type = Return(Params..., ...) const&&;
587 template <typename Return, typename... Params>
590 using type = Return(Params...) const&&;
593 template <typename Return, typename... Params>
596 using type = Return(Params..., ...) const&&;
611 template <typename Signature>
617 typename call_convention_traits_t::template add_call_convention_t<
619 typename call_convention_traits_t::template remove_call_convention_t<Signature>>>;
622 template <
typename Return,
typename... Params>
625 using type = Return(Params...);
628 template <
typename Return,
typename... Params>
631 using type = Return(Params..., ...);
634 template <
typename Return,
typename... Params>
637 using type = Return(Params...) noexcept;
640 template <typename Return, typename... Params>
643 using type = Return(Params..., ...) noexcept;
646 template <typename Return, typename... Params>
649 using type = Return(Params...)
const;
652 template <
typename Return,
typename... Params>
655 using type = Return(Params..., ...)
const;
658 template <
typename Return,
typename... Params>
661 using type = Return(Params...) const noexcept;
664 template <typename Return, typename... Params>
667 using type = Return(Params..., ...) const noexcept;
670 template <typename Return, typename... Params>
673 using type = Return(Params...);
676 template <
typename Return,
typename... Params>
679 using type = Return(Params..., ...);
682 template <
typename Return,
typename... Params>
685 using type = Return(Params...) noexcept;
688 template <typename Return, typename... Params>
691 using type = Return(Params..., ...) noexcept;
694 template <typename Return, typename... Params>
697 using type = Return(Params...)
const;
700 template <
typename Return,
typename... Params>
703 using type = Return(Params..., ...)
const;
706 template <
typename Return,
typename... Params>
709 using type = Return(Params...) const noexcept;
712 template <typename Return, typename... Params>
715 using type = Return(Params..., ...) const noexcept;
718 template <typename Return, typename... Params>
721 using type = Return(Params...);
724 template <
typename Return,
typename... Params>
727 using type = Return(Params..., ...);
730 template <
typename Return,
typename... Params>
733 using type = Return(Params...) noexcept;
736 template <typename Return, typename... Params>
739 using type = Return(Params..., ...) noexcept;
742 template <typename Return, typename... Params>
745 using type = Return(Params...)
const;
748 template <
typename Return,
typename... Params>
751 using type = Return(Params..., ...)
const;
754 template <
typename Return,
typename... Params>
757 using type = Return(Params...) const noexcept;
760 template <typename Return, typename... Params>
763 using type = Return(Params..., ...) const noexcept;
778 template <typename Signature>
784 typename call_convention_traits_t::template add_call_convention_t<
786 typename call_convention_traits_t::template remove_call_convention_t<Signature>>>;
789 template <
typename Return,
typename... Params>
792 using type = Return(Params...);
795 template <
typename Return,
typename... Params>
798 using type = Return(Params..., ...);
801 template <
typename Return,
typename... Params>
804 using type = Return(Params...) noexcept;
807 template <typename Return, typename... Params>
810 using type = Return(Params..., ...) noexcept;
813 template <typename Return, typename... Params>
816 using type = Return(Params...);
819 template <
typename Return,
typename... Params>
822 using type = Return(Params..., ...);
825 template <
typename Return,
typename... Params>
828 using type = Return(Params...) noexcept;
831 template <typename Return, typename... Params>
834 using type = Return(Params..., ...) noexcept;
837 template <typename Return, typename... Params>
840 using type = Return(Params...) &;
843 template <
typename Return,
typename... Params>
846 using type = Return(Params..., ...) &;
849 template <
typename Return,
typename... Params>
852 using type = Return(Params...) &
noexcept;
855 template <
typename Return,
typename... Params>
858 using type = Return(Params..., ...) &
noexcept;
861 template <
typename Return,
typename... Params>
864 using type = Return(Params...) &;
867 template <
typename Return,
typename... Params>
870 using type = Return(Params..., ...) &;
873 template <
typename Return,
typename... Params>
876 using type = Return(Params...) &
noexcept;
879 template <
typename Return,
typename... Params>
882 using type = Return(Params..., ...) &
noexcept;
885 template <
typename Return,
typename... Params>
888 using type = Return(Params...) &&;
891 template <
typename Return,
typename... Params>
894 using type = Return(Params..., ...) &&;
897 template <
typename Return,
typename... Params>
900 using type = Return(Params...) &&
noexcept;
903 template <
typename Return,
typename... Params>
906 using type = Return(Params..., ...) &&
noexcept;
909 template <
typename Return,
typename... Params>
912 using type = Return(Params...) &&;
915 template <
typename Return,
typename... Params>
918 using type = Return(Params..., ...) &&;
921 template <
typename Return,
typename... Params>
924 using type = Return(Params...) &&
noexcept;
927 template <
typename Return,
typename... Params>
930 using type = Return(Params..., ...) &&
noexcept;
945 template <
typename Signature>
967 template <
typename Signature>
975 template <
typename Return,
typename... Params>
981 template <
typename Return,
typename... Params>
999 template <std::
size_t index,
typename Signature>
1004 signature_decay_t<Signature>>
1009 template <std::size_t index,
typename Return,
typename... Params>
1011 :
public std::tuple_element<index, std::tuple<Params...>>
1027 template <
typename Signature>
1029 :
public std::integral_constant<
1031 std::same_as<Signature, signature_remove_const_qualifier_t<Signature>>
1032 ? Constness::non_const
1033 : Constness::as_const>
1049 template <
typename Signature>
1053 signature_remove_noexcept_t<
1054 signature_remove_const_qualifier_t<
1055 signature_remove_call_convention_t<Signature>>>>
1060 template <
typename Return,
typename... Params>
1062 :
public std::integral_constant<
1068 template <
typename Return,
typename... Params>
1070 :
public std::integral_constant<
1076 template <
typename Return,
typename... Params>
1078 :
public std::integral_constant<
1080 ValueCategory::lvalue>
1084 template <
typename Return,
typename... Params>
1086 :
public std::integral_constant<
1088 ValueCategory::lvalue>
1092 template <
typename Return,
typename... Params>
1094 :
public std::integral_constant<
1096 ValueCategory::rvalue>
1100 template <
typename Return,
typename... Params>
1102 :
public std::integral_constant<
1104 ValueCategory::rvalue>
1120 template <
typename Signature>
1122 :
public std::bool_constant<
1123 !std::same_as<Signature, signature_remove_noexcept_t<Signature>>>
1139 template <
typename Signature>
1143 signature_decay_t<Signature>>
1148 template <
typename Return,
typename... Params>
1160 template <
typename First,
typename Second,
bool reversed = false>
1162 :
public std::conditional_t<
1165 is_overloadable_with<Second, First, true>>
1169 template <
typename First,
typename Second>
1172 signature_param_list_t<signature_decay_t<First>>,
1173 signature_param_list_t<signature_decay_t<Second>>>)
1174 struct is_overloadable_with<First, Second, false>
1175 :
public std::true_type
1179 template <
typename Return1,
typename Return2,
typename... Params,
bool reversed>
1180 struct is_overloadable_with<Return1(Params...), Return2(Params...) const, reversed>
1181 :
public std::true_type
1185 template <
typename Return1,
typename Return2,
typename... Params,
bool reversed>
1186 struct is_overloadable_with<Return1(Params...)&, Return2(Params...) const&, reversed>
1187 : public std::true_type
1191 template <
typename Return1,
typename Return2,
typename... Params,
bool reversed>
1192 struct is_overloadable_with<Return1(Params...)&, Return2(Params...)&&, reversed>
1193 :
public std::true_type
1197 template <
typename Return1,
typename Return2,
typename... Params,
bool reversed>
1198 struct is_overloadable_with<Return1(Params...)&, Return2(Params...) const&&, reversed>
1199 : public std::true_type
1203 template <
typename Return1,
typename Return2,
typename... Params,
bool reversed>
1204 struct is_overloadable_with<Return1(Params...) const&, Return2(Params...)&&, reversed>
1205 :
public std::true_type
1209 template <
typename Return1,
typename Return2,
typename... Params,
bool reversed>
1210 struct is_overloadable_with<Return1(Params...) const&, Return2(Params...) const&&, reversed>
1211 : public std::true_type
1215 template <
typename Return1,
typename Return2,
typename... Params,
bool reversed>
1216 struct is_overloadable_with<Return1(Params...)&&, Return2(Params...) const&&, reversed>
1217 : public std::true_type
1221 template <
typename Signature>
1223 signature_remove_call_convention_t<Signature>>;
1234 template <
typename First,
typename Second>
1236 :
public detail::is_overloadable_with<
1237 detail::normalize_overload_t<First>,
1238 detail::normalize_overload_t<Second>>
1254 template <
typename First,
typename... Others>
1256 :
public std::conjunction<
1257 is_overloadable_with<First, Others>...,
1258 is_overload_set<Others...>>
1262 template <
typename First>
1264 :
public std::true_type
Determines, whether the given signature has default call-convention.
Definition TypeTraits.hpp:192
typename signature_call_convention< Signature >::type signature_call_convention_t
Convenience alias, exposing the type member alias of the actual type-trait.
Definition Fwd.hpp:75
typename signature_remove_call_convention< Signature >::type signature_remove_call_convention_t
Convenience alias, exposing the type member alias of the actual type-trait.
Definition Fwd.hpp:91
typename signature_remove_const_qualifier< Signature >::type signature_remove_const_qualifier_t
Convenience alias, exposing the type member alias of the actual type-trait.
Definition Fwd.hpp:139
typename signature_remove_noexcept< Signature >::type signature_remove_noexcept_t
Convenience alias, exposing the type member alias of the actual type-trait.
Definition Fwd.hpp:107
typename signature_remove_ref_qualifier< Signature >::type signature_remove_ref_qualifier_t
Convenience alias, exposing the type member alias of the actual type-trait.
Definition Fwd.hpp:123
Definition BoostTest.hpp:20
ValueCategory
Definition Fwd.hpp:30
detail::DefaultCallInterface< Derived, Signature > call_interface_t
Definition TypeTraits.hpp:254
std::type_identity_t< Signature > add_call_convention_t
Definition TypeTraits.hpp:251
detail::default_call_convention tag_t
Definition TypeTraits.hpp:245
std::type_identity_t< Signature > remove_call_convention_t
Definition TypeTraits.hpp:248
Primary template, purposely undefined.
Definition Fwd.hpp:295
Primary template.
Definition TypeTraits.hpp:1259
Primary template.
Definition TypeTraits.hpp:1239
Return(Params...,...) &&noexcept type
Definition TypeTraits.hpp:374
Return(Params...,...) &&noexcept type
Definition TypeTraits.hpp:386
Return(Params...,...) &noexcept type
Definition TypeTraits.hpp:338
Return(Params...,...) const noexcept type
Definition TypeTraits.hpp:302
Return(Params...,...) const &noexcept type
Definition TypeTraits.hpp:350
Return(Params...,...) const &&noexcept type
Definition TypeTraits.hpp:398
Return(Params...,...) const &&noexcept type
Definition TypeTraits.hpp:410
Return(Params...,...) const &noexcept type
Definition TypeTraits.hpp:362
Return(Params...,...) const noexcept type
Definition TypeTraits.hpp:314
Return(Params...,...) noexcept type
Definition TypeTraits.hpp:290
Return(Params...,...) noexcept type
Definition TypeTraits.hpp:278
Return(Params...,...) &noexcept type
Definition TypeTraits.hpp:326
Return(Params...) &&noexcept type
Definition TypeTraits.hpp:368
Return(Params...) &&noexcept type
Definition TypeTraits.hpp:380
Return(Params...) &noexcept type
Definition TypeTraits.hpp:332
Return(Params...) const noexcept type
Definition TypeTraits.hpp:296
Return(Params...) const &noexcept type
Definition TypeTraits.hpp:344
Return(Params...) const &&noexcept type
Definition TypeTraits.hpp:392
Return(Params...) const &&noexcept type
Definition TypeTraits.hpp:404
Return(Params...) const &noexcept type
Definition TypeTraits.hpp:356
Return(Params...) const noexcept type
Definition TypeTraits.hpp:308
Return(Params...) noexcept type
Definition TypeTraits.hpp:284
Return(Params...) noexcept type
Definition TypeTraits.hpp:272
Return(Params...) &noexcept type
Definition TypeTraits.hpp:320
Primary template, purposely undefined.
Definition Fwd.hpp:51
detail::default_call_convention type
Definition TypeTraits.hpp:210
Primary template, purposely undefined.
Definition Fwd.hpp:67
Primary template.
Definition TypeTraits.hpp:1034
Primary template.
Definition TypeTraits.hpp:947
signature_remove_noexcept_t< signature_remove_ref_qualifier_t< signature_remove_const_qualifier_t< signature_remove_call_convention_t< Signature > > > > type
Definition TypeTraits.hpp:948
Primary template.
Definition TypeTraits.hpp:1124
Primary template.
Definition TypeTraits.hpp:1145
Primary template.
Definition TypeTraits.hpp:1006
Primary template.
Definition TypeTraits.hpp:1057
Primary template, purposely undefined.
Definition TypeTraits.hpp:427
typename call_convention_traits< signature_call_convention_t< Signature > >::template remove_call_convention_t< Signature > type
Definition TypeTraits.hpp:428
Return(Params...,...) && type
Definition TypeTraits.hpp:894
Return(Params...,...) &&noexcept type
Definition TypeTraits.hpp:906
Return(Params...,...) &noexcept type
Definition TypeTraits.hpp:858
Return(Params...,...) type
Definition TypeTraits.hpp:822
Return(Params...,...) & type
Definition TypeTraits.hpp:870
Return(Params...,...) && type
Definition TypeTraits.hpp:918
Return(Params...,...) &&noexcept type
Definition TypeTraits.hpp:930
Return(Params...,...) &noexcept type
Definition TypeTraits.hpp:882
Return(Params...,...) noexcept type
Definition TypeTraits.hpp:834
Return(Params...,...) noexcept type
Definition TypeTraits.hpp:810
Return(Params...,...) type
Definition TypeTraits.hpp:798
Return(Params...,...) & type
Definition TypeTraits.hpp:846
Return(Params...) && type
Definition TypeTraits.hpp:888
Return(Params...) &&noexcept type
Definition TypeTraits.hpp:900
Return(Params...) &noexcept type
Definition TypeTraits.hpp:852
Return(Params...) type
Definition TypeTraits.hpp:816
Return(Params...) & type
Definition TypeTraits.hpp:864
Return(Params...) && type
Definition TypeTraits.hpp:912
Return(Params...) &&noexcept type
Definition TypeTraits.hpp:924
Return(Params...) &noexcept type
Definition TypeTraits.hpp:876
Return(Params...) noexcept type
Definition TypeTraits.hpp:828
Return(Params...) noexcept type
Definition TypeTraits.hpp:804
Return(Params...) type
Definition TypeTraits.hpp:792
Return(Params...) & type
Definition TypeTraits.hpp:840
typename call_convention_traits_t::template add_call_convention_t< signature_remove_const_qualifier_t< typename call_convention_traits_t::template remove_call_convention_t< Signature > > > type
Definition TypeTraits.hpp:783
Primary template, purposely undefined.
Definition Fwd.hpp:131
Return(Params...,...) && type
Definition TypeTraits.hpp:560
Return(Params...,...) && type
Definition TypeTraits.hpp:572
Return(Params...,...) & type
Definition TypeTraits.hpp:524
Return(Params...,...) const type
Definition TypeTraits.hpp:488
Return(Params...,...) const & type
Definition TypeTraits.hpp:536
Return(Params...,...) const && type
Definition TypeTraits.hpp:584
Return(Params...,...) const && type
Definition TypeTraits.hpp:596
Return(Params...,...) const & type
Definition TypeTraits.hpp:548
Return(Params...,...) const type
Definition TypeTraits.hpp:500
Return(Params...,...) type
Definition TypeTraits.hpp:476
Return(Params...,...) type
Definition TypeTraits.hpp:464
Return(Params...,...) & type
Definition TypeTraits.hpp:512
Return(Params...) && type
Definition TypeTraits.hpp:554
Return(Params...) && type
Definition TypeTraits.hpp:566
Return(Params...) & type
Definition TypeTraits.hpp:518
Return(Params...) const type
Definition TypeTraits.hpp:482
Return(Params...) const & type
Definition TypeTraits.hpp:530
Return(Params...) const && type
Definition TypeTraits.hpp:578
Return(Params...) const && type
Definition TypeTraits.hpp:590
Return(Params...) const & type
Definition TypeTraits.hpp:542
Return(Params...) const type
Definition TypeTraits.hpp:494
Return(Params...) type
Definition TypeTraits.hpp:470
Return(Params...) type
Definition TypeTraits.hpp:458
Return(Params...) & type
Definition TypeTraits.hpp:506
typename call_convention_traits_t::template add_call_convention_t< signature_remove_noexcept_t< typename call_convention_traits_t::template remove_call_convention_t< Signature > > > type
Definition TypeTraits.hpp:449
Primary template, purposely undefined.
Definition Fwd.hpp:99
Return(Params...,...) type
Definition TypeTraits.hpp:727
Return(Params...,...) noexcept type
Definition TypeTraits.hpp:739
Return(Params...,...) noexcept type
Definition TypeTraits.hpp:691
Return(Params...,...) const type
Definition TypeTraits.hpp:655
Return(Params...,...) const type
Definition TypeTraits.hpp:703
Return(Params...,...) const type
Definition TypeTraits.hpp:751
Return(Params...,...) const noexcept type
Definition TypeTraits.hpp:763
Return(Params...,...) const noexcept type
Definition TypeTraits.hpp:715
Return(Params...,...) const noexcept type
Definition TypeTraits.hpp:667
Return(Params...,...) noexcept type
Definition TypeTraits.hpp:643
Return(Params...,...) type
Definition TypeTraits.hpp:631
Return(Params...,...) type
Definition TypeTraits.hpp:679
Return(Params...) type
Definition TypeTraits.hpp:721
Return(Params...) noexcept type
Definition TypeTraits.hpp:733
Return(Params...) noexcept type
Definition TypeTraits.hpp:685
Return(Params...) const type
Definition TypeTraits.hpp:649
Return(Params...) const type
Definition TypeTraits.hpp:697
Return(Params...) const type
Definition TypeTraits.hpp:745
Return(Params...) const noexcept type
Definition TypeTraits.hpp:757
Return(Params...) const noexcept type
Definition TypeTraits.hpp:709
Return(Params...) const noexcept type
Definition TypeTraits.hpp:661
Return(Params...) noexcept type
Definition TypeTraits.hpp:637
Return(Params...) type
Definition TypeTraits.hpp:625
Return(Params...) type
Definition TypeTraits.hpp:673
typename call_convention_traits_t::template add_call_convention_t< signature_remove_ref_qualifier_t< typename call_convention_traits_t::template remove_call_convention_t< Signature > > > type
Definition TypeTraits.hpp:616
Primary template, purposely undefined.
Definition Fwd.hpp:115
Return type
Definition TypeTraits.hpp:984
Return type
Definition TypeTraits.hpp:978
Primary template.
Definition TypeTraits.hpp:972
A very basic type-list template.
Definition Fwd.hpp:42
std::uint8_t type
Definition TypeTraits.hpp:1287
std::uint16_t type
Definition TypeTraits.hpp:1296
std::uint32_t type
Definition TypeTraits.hpp:1305
std::uint64_t type
Definition TypeTraits.hpp:1314
Primary template, purposely undefined.
Definition Fwd.hpp:303