From 0a9256c5b2bd75568c25130c819b383f8871c179 Mon Sep 17 00:00:00 2001 From: Kenny Kerr Date: Tue, 15 Oct 2019 09:51:06 -0700 Subject: [PATCH] static_assert --- strings/base_array.h | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) 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