Skip to content

Commit 87a28ef

Browse files
authored
Merge pull request #383 from microsoft/kennykerr-clang-bool
Restore basic Clang support
2 parents 61b6261 + 0a9256c commit 87a28ef

File tree

1 file changed

+22
-16
lines changed

1 file changed

+22
-16
lines changed

strings/base_array.h

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -31,27 +31,17 @@ WINRT_EXPORT namespace winrt
3131
array_view(value, N)
3232
{}
3333

34-
template <typename = std::enable_if_t<std::is_same_v<T, bool>>>
35-
array_view(std::vector<bool>& value) noexcept
36-
{
37-
static_assert(false, "Cannot use std::vector<bool> as an array_view. Consider std::array or std::unique_ptr<bool[]>.");
38-
}
39-
40-
template <typename = std::enable_if_t<std::is_same_v<T, bool>>>
41-
array_view(std::vector<bool> const& value) noexcept
42-
{
43-
static_assert(false, "Cannot use std::vector<bool> as an array_view. Consider std::array or std::unique_ptr<bool[]>.");
44-
}
45-
4634
template <typename C>
4735
array_view(std::vector<C>& value) noexcept :
48-
array_view(value.data(), static_cast<size_type>(value.size()))
49-
{}
36+
array_view(data(value), static_cast<size_type>(value.size()))
37+
{
38+
}
5039

5140
template <typename C>
5241
array_view(std::vector<C> const& value) noexcept :
53-
array_view(value.data(), static_cast<size_type>(value.size()))
54-
{}
42+
array_view(data(value), static_cast<size_type>(value.size()))
43+
{
44+
}
5545

5646
template <typename C, size_t N>
5747
array_view(std::array<C, N>& value) noexcept :
@@ -208,6 +198,22 @@ WINRT_EXPORT namespace winrt
208198

209199
pointer m_data{ nullptr };
210200
size_type m_size{ 0 };
201+
202+
private:
203+
204+
template <typename C>
205+
auto data(std::vector<C> const& value) noexcept
206+
{
207+
static_assert(!std::is_same_v<C, bool>, "Cannot use std::vector<bool> as an array_view. Consider std::array or std::unique_ptr<bool[]>.");
208+
return value.data();
209+
}
210+
211+
template <typename C>
212+
auto data(std::vector<C>& value) noexcept
213+
{
214+
static_assert(!std::is_same_v<C, bool>, "Cannot use std::vector<bool> as an array_view. Consider std::array or std::unique_ptr<bool[]>.");
215+
return value.data();
216+
}
211217
};
212218

213219
template <typename T>

0 commit comments

Comments
 (0)