diff --git a/strings/base_array.h b/strings/base_array.h index 55a5047cd..ff4cfece7 100644 --- a/strings/base_array.h +++ b/strings/base_array.h @@ -31,27 +31,17 @@ WINRT_EXPORT namespace winrt array_view(value, N) {} - template >> - array_view(std::vector& value) noexcept - { - static_assert(false, "Cannot use std::vector as an array_view. Consider std::array or std::unique_ptr."); - } - - template >> - array_view(std::vector const& value) noexcept - { - static_assert(false, "Cannot use std::vector as an array_view. Consider std::array or std::unique_ptr."); - } - template array_view(std::vector& value) noexcept : - array_view(value.data(), static_cast(value.size())) - {} + array_view(data(value), static_cast(value.size())) + { + } template array_view(std::vector const& value) noexcept : - array_view(value.data(), static_cast(value.size())) - {} + array_view(data(value), static_cast(value.size())) + { + } template array_view(std::array& value) noexcept : @@ -208,6 +198,22 @@ WINRT_EXPORT namespace winrt pointer m_data{ nullptr }; size_type m_size{ 0 }; + + private: + + template + auto data(std::vector const& value) noexcept + { + static_assert(!std::is_same_v, "Cannot use std::vector as an array_view. Consider std::array or std::unique_ptr."); + return value.data(); + } + + template + auto data(std::vector& value) noexcept + { + static_assert(!std::is_same_v, "Cannot use std::vector as an array_view. Consider std::array or std::unique_ptr."); + return value.data(); + } }; template