Fix Wreserved-identifier for UDLs in Catch2

See #578
This commit is contained in:
Martin Hořeňovský 2021-08-19 19:06:23 +02:00
parent edad4d0af7
commit 4113a12c69
No known key found for this signature in database
GPG Key ID: DE48307B8B0D381A
3 changed files with 21 additions and 4 deletions

View File

@ -239,6 +239,23 @@ there is no difference is wrong, QNX and VxWorks won't compile if you
include the header as `<cfoo>` and call the function unqualified. include the header as `<cfoo>` and call the function unqualified.
#### User-Defined Literals (UDL) for Catch2' types
Due to messy standardese and ... not great ... implementation of
`-Wreserved-identifier` in Clang, avoid declaring UDLs as
```cpp
Approx operator "" _a(long double);
```
and instead declare them as
```cpp
Approx operator ""_a(long double);
```
Notice that the second version does not have a space between the `""` and
the literal suffix.
### New source file template ### New source file template
If you are adding new source file, there is a template you should use. If you are adding new source file, there is a template you should use.

View File

@ -114,8 +114,8 @@ namespace Catch {
}; };
namespace literals { namespace literals {
Approx operator "" _a(long double val); Approx operator ""_a(long double val);
Approx operator "" _a(unsigned long long val); Approx operator ""_a(unsigned long long val);
} // end namespace literals } // end namespace literals
template<> template<>

View File

@ -98,12 +98,12 @@ namespace Catch {
}; };
constexpr auto operator "" _sr( char const* rawChars, std::size_t size ) noexcept -> StringRef { constexpr auto operator ""_sr( char const* rawChars, std::size_t size ) noexcept -> StringRef {
return StringRef( rawChars, size ); return StringRef( rawChars, size );
} }
} // namespace Catch } // namespace Catch
constexpr auto operator "" _catch_sr( char const* rawChars, std::size_t size ) noexcept -> Catch::StringRef { constexpr auto operator ""_catch_sr( char const* rawChars, std::size_t size ) noexcept -> Catch::StringRef {
return Catch::StringRef( rawChars, size ); return Catch::StringRef( rawChars, size );
} }