14static_assert(__cplusplus == 201103,
"");
18#include <bits/stdc++.h>
20#if __has_include (<version>)
34 static_assert(__cpp_decltype,
"");
40 assert((is_same<
decltype(a),
decltype(b)>::value));
41 assert((!is_same<
decltype(a),
unsigned>::value));
42 assert((is_same<int, int32_t>::value));
43 assert((is_same<signed, int32_t>::value));
45 assert(is_integral<int>::value);
46 assert(is_integral<bool>::value);
47 assert(!is_integral<float>::value);
48 assert(is_pointer<int*>::value);
49 assert(
sizeof (
long long) >= 8);
69 assert(u2.get() == p1);
72 assert(u2.get() == &d);
75 u2.reset(
new int(10));
79 assert(u2 ==
nullptr);
90 assert(!s1.use_count());
92 auto s2 = make_shared<int>(1);
93 assert(s2.use_count() == 1);
96 assert(s1.use_count() == 2);
99 assert(*s1 == *s1.get());
103 assert(s1.use_count() == 1);
104 assert(!s2.use_count());
111 std::weak_ptr<int> wp;
114 assert(!wp.use_count());
115 auto sp = std::make_shared<int>(1);
117 assert(*wp.lock() == 1);
128 auto a =
new int[3] {1, 2, 3};
132 auto as =
new string[3] {
"1",
"2",
"3"};
133 assert(as[2] ==
"3");
148 assert(is_const<
typename remove_reference<
decltype(x)>::type>::value);
149 assert(is_lvalue_reference<
decltype(x)>::value);
155 assert(is_lvalue_reference<
decltype(x)>::value);
161 assert(is_rvalue_reference<
decltype(x)>::value);