diff --git a/substrate/span b/substrate/span index 45389605..d80f62b5 100644 --- a/substrate/span +++ b/substrate/span @@ -25,13 +25,14 @@ namespace substrate { template using void_t = void; - template constexpr auto data(C &c) -> decltype(c.data()); - template constexpr auto data(const C &c) -> decltype(c.data()); - template constexpr T *data(T (&array)[N]) noexcept; - template constexpr const E *data(std::initializer_list il) noexcept; - template constexpr auto size(const C &c) -> decltype(c.size()); - template constexpr std::size_t size(const T (&array)[N]) noexcept; - template constexpr std::ptrdiff_t ssize(const T (&array)[N]) noexcept; + template constexpr auto data(C &c) { return c.data(); } + template constexpr auto data(const C &c) { return c.data(); } + template constexpr T *data(T (&array)[N]) noexcept { return array; } + template constexpr const E *data(std::initializer_list il) noexcept { return il.data(); } + template constexpr auto size(const C &c) { return c.size(); } + template constexpr std::size_t size(const T (&array)[N]) noexcept { return N; } + template constexpr std::ptrdiff_t ssize(const T (&array)[N]) noexcept + { return static_cast(N); } template using bool_constant = std::integral_constant; enum class byte : unsigned char { };