Skip to content

Commit 08f2dd8

Browse files
add test
1 parent c79eab6 commit 08f2dd8

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

libcxx/test/std/ranges/range.adaptors/range.concat/size.pass.cpp

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,26 @@ struct NoSizeView : std::ranges::view_base {
4545
constexpr auto end() const { return buffer + 8; }
4646
};
4747

48+
struct IntSizeView : std::ranges::view_base {
49+
using iterator = forward_iterator<int*>;
50+
51+
constexpr IntSizeView() {}
52+
constexpr auto begin() const { return iterator{buffer}; }
53+
constexpr auto end() const { return iterator{buffer + 9}; }
54+
constexpr int size () const { return 9; }
55+
};
56+
57+
struct UnsignedSizeView : std::ranges::view_base {
58+
using iterator = forward_iterator<int*>;
59+
60+
constexpr UnsignedSizeView() {}
61+
constexpr auto begin() const { return iterator{buffer}; }
62+
constexpr auto end() const { return iterator{buffer + 9}; }
63+
constexpr unsigned int size () const { return 9; }
64+
};
65+
66+
67+
4868
constexpr bool test() {
4969
{
5070
// single range
@@ -89,6 +109,16 @@ constexpr bool test() {
89109
static_assert(!std::ranges::sized_range<decltype(std::as_const(v))>);
90110
}
91111

112+
{
113+
//two ranges with different size type
114+
std::ranges::concat_view v(UnsignedSizeView(), IntSizeView());
115+
assert(v.size() == 18);
116+
// common type between size_t and int should be size_t
117+
ASSERT_SAME_TYPE(decltype(v.size()), unsigned int);
118+
}
119+
120+
121+
92122
return true;
93123
}
94124

0 commit comments

Comments
 (0)