zstring_view: Fix find functions
Change-Id: I5a3765f1a29531435fea49930c84890969f5dd8b
Signed-off-by: William A. Kennington III <wak@google.com>
diff --git a/include/stdplus/zstring_view.hpp b/include/stdplus/zstring_view.hpp
index 616790d..2a8de3c 100644
--- a/include/stdplus/zstring_view.hpp
+++ b/include/stdplus/zstring_view.hpp
@@ -240,13 +240,13 @@
zstring_view_has(ends_with);
#undef zstring_view_has
-#define zstring_view_find(func) \
- inline constexpr size_type func(string_view_base v, size_type pos = 0) \
+#define zstring_view_find(func, def) \
+ inline constexpr size_type func(string_view_base v, size_type pos = def) \
const noexcept \
{ \
return sv.func(v, pos); \
} \
- inline constexpr size_type func(value_type ch, size_type pos = 0) \
+ inline constexpr size_type func(value_type ch, size_type pos = def) \
const noexcept \
{ \
return sv.func(ch, pos); \
@@ -256,16 +256,17 @@
{ \
return sv.func(s, pos, count); \
} \
- inline constexpr size_type func(const_pointer s, size_type pos = 0) const \
+ inline constexpr size_type func(const_pointer s, size_type pos = def) \
+ const \
{ \
return sv.func(s, pos); \
}
- zstring_view_find(find);
- zstring_view_find(rfind);
- zstring_view_find(find_first_of);
- zstring_view_find(find_last_of);
- zstring_view_find(find_first_not_of);
- zstring_view_find(find_last_not_of);
+ zstring_view_find(find, 0);
+ zstring_view_find(rfind, npos);
+ zstring_view_find(find_first_of, 0);
+ zstring_view_find(find_last_of, npos);
+ zstring_view_find(find_first_not_of, 0);
+ zstring_view_find(find_last_not_of, npos);
#undef zstring_view_find
inline constexpr const_pointer c_str() const noexcept
diff --git a/test/zstring_view.cpp b/test/zstring_view.cpp
index 14a1e04..40ad4d4 100644
--- a/test/zstring_view.cpp
+++ b/test/zstring_view.cpp
@@ -30,6 +30,10 @@
char mut[] = "aa";
auto s3 = zstring_view(mut);
+ EXPECT_EQ(1, s1.find('c'));
+ EXPECT_EQ(0, s3.find('a'));
+ EXPECT_EQ(1, s3.rfind('a'));
+
EXPECT_NE(sv, s2);
EXPECT_NE(s1, s2);
EXPECT_EQ(s3, "aa");