27 {
static_cast<size_t> (T{1u}) } -> convertible_to<size_t>;
28 { T{1u} + T{1u} } -> convertible_to<T>;
43 void const_method ()
const {};
45 static_assert (default_initializable<OnlyDefaultConstructibleAndMoveable>);
46 static_assert (not copyable<OnlyDefaultConstructibleAndMoveable>);
47 static_assert (move_constructible<OnlyDefaultConstructibleAndMoveable>);
48 static_assert (not equality_comparable<OnlyDefaultConstructibleAndMoveable>);
49 static_assert (not totally_ordered<OnlyDefaultConstructibleAndMoveable>);
50 static_assert (not semiregular<OnlyDefaultConstructibleAndMoveable>);
51 static_assert (not regular<OnlyDefaultConstructibleAndMoveable>);
71 [[deprecated (
"Since Stroika v3.0d10 use static_cast<size_t>")]]
size_t GetValue ()
const
75 static size_t GetTotalLiveCount ();
78 explicit operator size_t ()
const;
86 static inline size_t sTotalLiveObjects_{0};
88 static_assert (not default_initializable<OnlyCopyableMoveableAndTotallyOrdered>);
89 static_assert (copyable<OnlyCopyableMoveableAndTotallyOrdered>);
90 static_assert (move_constructible<OnlyCopyableMoveableAndTotallyOrdered>);
91 static_assert (equality_comparable<OnlyCopyableMoveableAndTotallyOrdered>);
92 static_assert (totally_ordered<OnlyCopyableMoveableAndTotallyOrdered>);
93 static_assert (not semiregular<OnlyCopyableMoveableAndTotallyOrdered>);
94 static_assert (not regular<OnlyCopyableMoveableAndTotallyOrdered>);
114 [[deprecated (
"Since Stroika v3.0d10 use static_cast<size_t>")]]
size_t GetValue ()
const
118 static size_t GetTotalLiveCount ();
120 explicit operator size_t ()
const;
126 static inline size_t sTotalLiveObjects_{0};
128 static_assert (not default_initializable<OnlyCopyableMoveable>);
129 static_assert (copyable<OnlyCopyableMoveable>);
130 static_assert (move_constructible<OnlyCopyableMoveable>);
131 static_assert (not equality_comparable<OnlyCopyableMoveable>);
132 static_assert (not totally_ordered<OnlyCopyableMoveable>);
133 static_assert (not semiregular<OnlyCopyableMoveable>);
134 static_assert (not regular<OnlyCopyableMoveable>);
161 static inline int sLiveCount = 0;
162 static inline int sCopiesUntilThrow = -1;
171 : fValue_{src.fValue_}
173 if (sCopiesUntilThrow == 0) {
174 throw runtime_error{
"CopyableWithThrowingCopyCTOR"};
176 if (sCopiesUntilThrow > 0) {
188 nonvirtual
int GetValue ()
const
194 return fValue_ == rhs.fValue_;
200 static_assert (default_initializable<CopyableWithThrowingCopyCTOR>);
201 static_assert (copyable<CopyableWithThrowingCopyCTOR>);
202 static_assert (equality_comparable<CopyableWithThrowingCopyCTOR>);
209 static_assert (regular<Regular>);
215 template <IINTeroperable T>
217 bool operator() (T v1, T v2)
const
219 return static_cast<size_t> (v1) ==
static_cast<size_t> (v2);
226 template <IINTeroperable T>
228 bool operator() (T v1, T v2)
const
230 return static_cast<size_t> (v1) <
static_cast<size_t> (v2);
237 template <IINTeroperable T>
239 strong_ordering operator() (T v1, T v2)
const
241 return static_cast<size_t> (v1) <=>
static_cast<size_t> (v2);