From 5e773556feceab7f4dd0e9d898aee5b1f72b58c8 Mon Sep 17 00:00:00 2001 From: Jordan Maples Date: Wed, 30 Sep 2020 16:39:33 -0700 Subject: [PATCH] initial deprecation of all types in string_span --- include/gsl/string_span | 81 ++++++++++++++++++++++------------------- 1 file changed, 44 insertions(+), 37 deletions(-) diff --git a/include/gsl/string_span b/include/gsl/string_span index 938c71d..b210d75 100644 --- a/include/gsl/string_span +++ b/include/gsl/string_span @@ -35,9 +35,14 @@ // Turn MSVC /analyze rules that generate too much noise. TODO: fix in the tool. #pragma warning(disable : 26446) // TODO: bug in parser - attributes and templates #pragma warning(disable : 26481) // TODO: suppress does not work inside templates sometimes - +#pragma warning(disable : 4996) // use of functions & classes marked [[deprecated]] #endif // _MSC_VER +#if defined(__GNUC__) || defined(__clang__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif + namespace gsl { // @@ -52,36 +57,36 @@ namespace gsl // template -using basic_zstring = CharT*; +using basic_zstring [[deprecated]] = CharT*; template -using czstring = basic_zstring; +using czstring [[deprecated]] = basic_zstring; template -using cwzstring = basic_zstring; +using cwzstring [[deprecated]] = basic_zstring; template -using cu16zstring = basic_zstring; +using cu16zstring [[deprecated]] = basic_zstring; template -using cu32zstring = basic_zstring; +using cu32zstring [[deprecated]] = basic_zstring; template -using zstring = basic_zstring; +using zstring [[deprecated]] = basic_zstring; template -using wzstring = basic_zstring; +using wzstring [[deprecated]] = basic_zstring; template -using u16zstring = basic_zstring; +using u16zstring [[deprecated]] = basic_zstring; template -using u32zstring = basic_zstring; +using u32zstring [[deprecated]] = basic_zstring; namespace details { template - constexpr std::size_t string_length(const CharT* str, std::size_t n) + [[deprecated]] constexpr std::size_t string_length(const CharT* str, std::size_t n) { if (str == nullptr || n == dynamic_extent) return 0; @@ -103,7 +108,7 @@ namespace details // Will fail-fast if sentinel cannot be found before max elements are examined. // template -constexpr span ensure_sentinel(T* seq, +[[deprecated]]constexpr span ensure_sentinel(T* seq, std::size_t max = static_cast(-1)) { Ensures(seq != nullptr); @@ -124,7 +129,7 @@ constexpr span ensure_sentinel(T* seq, // Will fail fast if a null-terminator cannot be found before the limit of size_type. // template -constexpr span ensure_z(CharT* const& sz, +[[deprecated]] constexpr span ensure_z(CharT* const& sz, std::size_t max = static_cast(-1)) { return ensure_sentinel(sz, max); @@ -137,29 +142,28 @@ constexpr span ensure_z(CharT (&sz)[N]) } template -constexpr span::type, dynamic_extent> -ensure_z(Cont& cont) +[[deprecated]] constexpr span::type, dynamic_extent> ensure_z(Cont& cont) { return ensure_z(cont.data(), cont.size()); } template -class basic_string_span; +class [[deprecated]] basic_string_span; namespace details { template - struct is_basic_string_span_oracle : std::false_type + struct [[deprecated]] is_basic_string_span_oracle : std::false_type { }; template - struct is_basic_string_span_oracle> : std::true_type + struct [[deprecated]] is_basic_string_span_oracle> : std::true_type { }; template - struct is_basic_string_span : is_basic_string_span_oracle> + struct [[deprecated]] is_basic_string_span : is_basic_string_span_oracle> { }; } // namespace details @@ -168,7 +172,7 @@ namespace details // string_span and relatives // template -class basic_string_span +class [[deprecated]] basic_string_span { public: using element_type = CharT; @@ -315,28 +319,28 @@ private: }; template -using string_span = basic_string_span; +using string_span [[deprecated]] = basic_string_span; template -using cstring_span = basic_string_span; +using cstring_span [[deprecated]] = basic_string_span; template -using wstring_span = basic_string_span; +using wstring_span [[deprecated]] = basic_string_span; template -using cwstring_span = basic_string_span; +using cwstring_span [[deprecated]] = basic_string_span; template -using u16string_span = basic_string_span; +using u16string_span [[deprecated]] = basic_string_span; template -using cu16string_span = basic_string_span; +using cu16string_span [[deprecated]] = basic_string_span; template -using u32string_span = basic_string_span; +using u32string_span [[deprecated]] = basic_string_span; template -using cu32string_span = basic_string_span; +using cu32string_span [[deprecated]] = basic_string_span; // // to_string() allow (explicit) conversions from string_span to string @@ -377,7 +381,7 @@ as_writable_bytes(basic_string_span s) noexcept // zero-terminated string span, used to convert // zero-terminated spans to legacy strings template -class basic_zstring_span +class [[deprecated]] basic_zstring_span { public: using value_type = CharT; @@ -426,28 +430,28 @@ private: }; template -using zstring_span = basic_zstring_span; +using zstring_span [[deprecated]] = basic_zstring_span; template -using wzstring_span = basic_zstring_span; +using wzstring_span [[deprecated]] = basic_zstring_span; template -using u16zstring_span = basic_zstring_span; +using u16zstring_span [[deprecated]] = basic_zstring_span; template -using u32zstring_span = basic_zstring_span; +using u32zstring_span [[deprecated]] = basic_zstring_span; template -using czstring_span = basic_zstring_span; +using czstring_span [[deprecated]] = basic_zstring_span; template -using cwzstring_span = basic_zstring_span; +using cwzstring_span [[deprecated]] = basic_zstring_span; template -using cu16zstring_span = basic_zstring_span; +using cu16zstring_span [[deprecated]] = basic_zstring_span; template -using cu32zstring_span = basic_zstring_span; +using cu32zstring_span [[deprecated]] = basic_zstring_span; // operator == template =(const T& one, gsl::basic_string_span other) #endif // _MSC_VER +#if defined(__GNUC__) || defined(__clang__) +#pragma GCC diagnostic pop +#endif #endif // GSL_STRING_SPAN_H