struct X { int a, b; }; X *make_x() { X *p = (X*)malloc(sizeof(struct X)); p->a = 1; p->b = 2; return p; }
template <typename T, size_t N> auto count_unique(const std::array<T, N>& v) { return std::unordered_set<T>{v.begin(), v.end()}.size(); }
template <class T> concept Reservable = requires(T v) { v.reserve(int{}); };
struct Test; static_assert(!Reservable<Test>); struct Test { void reserve(int); }; static_assert(Reservable<Test>);
constexpr const T* operator->() const; constexpr T* operator->(); Requires: *this contains a value. Returns: val. Throws: Nothing.