#include <types.hh>
Public Member Functions | |
BackedStringView (std::string &&s) | |
BackedStringView (std::string_view sv) | |
template<size_t N> | |
BackedStringView (const char(&lit)[N]) | |
BackedStringView (const BackedStringView &)=delete | |
BackedStringView & | operator= (const BackedStringView &)=delete |
BackedStringView (BackedStringView &&other)=default | |
BackedStringView & | operator= (BackedStringView &&other)=default |
bool | isOwned () const |
std::string | toOwned () && |
std::string_view | operator* () const |
Ptr | operator-> () const |
This wants to be a little bit like rust's Cow type. Some parts of the evaluator benefit greatly from being able to reuse existing allocations for strings, but have to be able to also use newly allocated storage for values.
We do not define implicit conversions, even with ref qualifiers, since those can easily become ambiguous to the reader and can degrade into copying behaviour we want to avoid.
|
default |
We only want move operations defined since the sole purpose of this type is to avoid copies.