| 75 | }; |
| 76 | |
| 77 | int main() |
| 78 | { |
| 79 | |
| 80 | // struct_arity |
| 81 | { |
| 82 | using bp::detail::struct_arity_v; |
| 83 | |
| 84 | static_assert(struct_arity_v<empty> == 0); |
| 85 | static_assert(struct_arity_v<int_> == 1); |
| 86 | static_assert(struct_arity_v<int_string> == 2); |
| 87 | static_assert(struct_arity_v<string_int> == 2); |
| 88 | static_assert(struct_arity_v<string_int_double> == 3); |
| 89 | |
| 90 | // 1 due to the copy ctor. |
| 91 | static_assert(struct_arity_v<string_int_double_priv> == 1); |
| 92 | |
| 93 | static_assert(struct_arity_v<string_int_double_no_copy_move> <= 0); |
| 94 | } |
| 95 | |
| 96 | // is_struct_assignable |
| 97 | { |
| 98 | using bp::detail::is_struct_assignable_v; |
| 99 | |
| 100 | static_assert(!is_struct_assignable_v<void, void>); |
| 101 | static_assert(!is_struct_assignable_v<int, bp::tuple<int, std::string>>); |
| 102 | static_assert(!is_struct_assignable_v<void, bp::tuple<int, std::string>>); |
| 103 | static_assert(!is_struct_assignable_v<empty, bp::tuple<int, std::string>>); |
| 104 | static_assert(!is_struct_assignable_v<int_, bp::tuple<int, std::string>>); |
| 105 | static_assert( |
| 106 | !is_struct_assignable_v<string_int, bp::tuple<int, std::string>>); |
| 107 | static_assert(!is_struct_assignable_v< |
| 108 | string_int_double, |
| 109 | bp::tuple<std::string, int>>); |
| 110 | static_assert(!is_struct_assignable_v< |
| 111 | string_int, |
| 112 | bp::tuple<std::string, int, double>>); |
| 113 | static_assert(!is_struct_assignable_v< |
| 114 | string_int_double_priv, |
| 115 | bp::tuple<std::string, int, double>>); |
| 116 | static_assert(!is_struct_assignable_v< |
| 117 | string_int_double_no_copy_move, |
| 118 | bp::tuple<std::string, int, double>>); |
| 119 | |
| 120 | static_assert( |
| 121 | is_struct_assignable_v<int_string, bp::tuple<int, std::string>>); |
| 122 | static_assert( |
| 123 | is_struct_assignable_v<int_string, bp::tuple<short, char const *>>); |
| 124 | |
| 125 | static_assert( |
| 126 | is_struct_assignable_v<string_int, bp::tuple<std::string, int>>); |
| 127 | static_assert( |
| 128 | is_struct_assignable_v<string_int, bp::tuple<char const *, short>>); |
| 129 | |
| 130 | static_assert(is_struct_assignable_v< |
| 131 | string_int_double, |
| 132 | bp::tuple<std::string, int, double>>); |
| 133 | static_assert(is_struct_assignable_v< |
| 134 | string_int_double, |
nothing calls this directly
no test coverage detected