Skip to content

Commit

Permalink
Documentation: Add operator"" sv pattern to Patterns.md
Browse files Browse the repository at this point in the history
  • Loading branch information
bgianfo authored and awesomekling committed Sep 28, 2021
1 parent ad33efb commit f71f1d6
Showing 1 changed file with 32 additions and 0 deletions.
32 changes: 32 additions & 0 deletions Documentation/Patterns.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,3 +80,35 @@ struct Empty { };

static_assert(AssertSize<Empty, 1>());
```
## String View Literals
`AK::StringView` support for `operator"" sv` which is a special string literal operator that was added as of
[C++17 to enable `std::string_view` literals](https://en.cppreference.com/w/cpp/string/basic_string_view/operator%22%22sv).
```cpp
[[nodiscard]] ALWAYS_INLINE constexpr AK::StringView operator"" sv(const char* cstring, size_t length)
{
return AK::StringView(cstring, length);
}
```

This allows `AK::StringView` to be constructed from string literals with no runtime
cost to find the string length, and the data the `AK::StringView` points to will
reside in the data section of the binary.

Example Usage:
```cpp
#include <AK/String.h>
#include <AK/StringView.h>
#include <LibTest/TestCase.h>

TEST_CASE(string_view_literal_operator)
{
StringView literal_view = "foo"sv;
String test_string = "foo";

EXPECT_EQ(literal_view.length(), test_string.length());
EXPECT_EQ(literal_view, test_string);
}
```

0 comments on commit f71f1d6

Please sign in to comment.