Removed templated StringRef ctor and added StringRef literal

This commit is contained in:
Phil Nash 2017-11-21 11:08:08 +00:00
parent c39109dce3
commit e4a898eaaa
5 changed files with 15 additions and 17 deletions

View file

@ -23,10 +23,12 @@ namespace Catch {
/// visible - but it does mean (substring) StringRefs should not be shared between
/// threads.
class StringRef {
public:
using size_type = std::size_t;
private:
friend struct StringRefTestAccess;
using size_type = std::size_t;
char const* m_start;
size_type m_size;
@ -54,11 +56,7 @@ namespace Catch {
other.m_data = nullptr;
}
template<size_t Size>
StringRef( char const(& rawChars)[Size] ) noexcept
: m_start( rawChars ),
m_size( static_cast<size_type>( Size-1 ) )
{}
StringRef( char const* rawChars ) noexcept;
StringRef( char const* rawChars, size_type size ) noexcept
: m_start( rawChars ),
@ -82,8 +80,6 @@ namespace Catch {
return *this;
}
static auto fromRaw( char const *rawChars ) -> StringRef;
operator std::string() const;
void swap( StringRef& other ) noexcept;
@ -120,6 +116,10 @@ namespace Catch {
auto operator << ( std::ostream& os, StringRef const& sr ) -> std::ostream&;
inline auto operator ""_sr( char const* rawChars, std::size_t size ) noexcept -> StringRef {
return StringRef( rawChars, size );
}
} // namespace Catch
#endif // CATCH_STRINGREF_H_INCLUDED