41 concept layout =
requires(
const T& t) {
42 typename T::inner_value_type;
43 typename T::value_type;
44 typename T::const_reference;
45 typename T::size_type;
46 typename T::const_iterator;
47 typename T::const_reverse_iterator;
51 { t[std::size_t()] } -> std::same_as<typename T::const_reference>;
52 { t.size() } -> std::same_as<typename T::size_type>;
54 { t.begin() } -> std::same_as<typename T::const_iterator>;
55 { t.end() } -> std::same_as<typename T::const_iterator>;
56 { t.cbegin() } -> std::same_as<typename T::const_iterator>;
57 { t.cend() } -> std::same_as<typename T::const_iterator>;
58 { t.rbegin() } -> std::same_as<typename T::const_reverse_iterator>;
59 { t.rend() } -> std::same_as<typename T::const_reverse_iterator>;
60 { t.crbegin() } -> std::same_as<typename T::const_reverse_iterator>;
61 { t.crend() } -> std::same_as<typename T::const_reverse_iterator>;