// Copyright The OpenTelemetry Authors // SPDX-License-Identifier: Apache-2.0 #pragma once // IWYU pragma: private, include "opentelemetry/nostd/utility.h" #include #include #include "opentelemetry/version.h" OPENTELEMETRY_BEGIN_NAMESPACE // Standard Type aliases in nostd namespace namespace nostd { // // Backport of std::data // // See https://en.cppreference.com/w/cpp/iterator/data // template auto data(C &c) noexcept(noexcept(c.data())) -> decltype(c.data()) { return c.data(); } template auto data(const C &c) noexcept(noexcept(c.data())) -> decltype(c.data()) { return c.data(); } template T *data(T (&array)[N]) noexcept { return array; } template const E *data(std::initializer_list list) noexcept { return list.begin(); } // // Backport of std::size // // See https://en.cppreference.com/w/cpp/iterator/size // template auto size(const C &c) noexcept(noexcept(c.size())) -> decltype(c.size()) { return c.size(); } template std::size_t size(T (& /* array */)[N]) noexcept { return N; } template using make_index_sequence = std::make_index_sequence; template using index_sequence = std::index_sequence; } // namespace nostd OPENTELEMETRY_END_NAMESPACE