7#include "libcopp/utils/config/libcopp_build_features.h"
11LIBCOPP_COPP_NAMESPACE_BEGIN
14#if ((defined(__cplusplus) && __cplusplus >= 201703L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 201703L))
21template <
class TCONTAINER>
22LIBCOPP_COPP_API_HEAD_ONLY
constexpr inline auto size(
const TCONTAINER& container) ->
decltype(container.size()) {
23 return container.size();
22LIBCOPP_COPP_API_HEAD_ONLY
constexpr inline auto size(
const TCONTAINER& container) ->
decltype(container.size()) {
…}
26template <
class T,
size_t SIZE>
27LIBCOPP_COPP_API_HEAD_ONLY
constexpr inline size_t size(
const T (&)[SIZE])
noexcept {
27LIBCOPP_COPP_API_HEAD_ONLY
constexpr inline size_t size(
const T (&)[SIZE])
noexcept {
…}
31template <
class TCONTAINER>
32LIBCOPP_COPP_API_HEAD_ONLY
constexpr inline auto data(TCONTAINER& container) ->
decltype(container.data()) {
33 return container.data();
32LIBCOPP_COPP_API_HEAD_ONLY
constexpr inline auto data(TCONTAINER& container) ->
decltype(container.data()) {
…}
36template <
class TCONTAINER>
37LIBCOPP_COPP_API_HEAD_ONLY
constexpr inline auto data(
const TCONTAINER& container) ->
decltype(container.data()) {
38 return container.data();
37LIBCOPP_COPP_API_HEAD_ONLY
constexpr inline auto data(
const TCONTAINER& container) ->
decltype(container.data()) {
…}
41template <
class T,
size_t SIZE>
42LIBCOPP_COPP_API_HEAD_ONLY
constexpr inline T*
data(T (&array_value)[SIZE])
noexcept {
42LIBCOPP_COPP_API_HEAD_ONLY
constexpr inline T*
data(T (&array_value)[SIZE])
noexcept {
…}
46template <
class TELEMENT>
47LIBCOPP_COPP_API_HEAD_ONLY
constexpr inline const TELEMENT*
data(std::initializer_list<TELEMENT> l)
noexcept {
47LIBCOPP_COPP_API_HEAD_ONLY
constexpr inline const TELEMENT*
data(std::initializer_list<TELEMENT> l)
noexcept {
…}
53LIBCOPP_COPP_NAMESPACE_END
LIBCOPP_COPP_API_HEAD_ONLY constexpr auto size(const TCONTAINER &container) -> decltype(container.size())
LIBCOPP_COPP_API_HEAD_ONLY constexpr auto data(TCONTAINER &container) -> decltype(container.data())