Workaround AppleClang bug by renaming TestHasher constructor argument

As far as I understand the standard, if there is a function called
`rng` in the global namespace, and a function argument called `rng`,
then the argument should shadow the function. This then means that
uses of `rng` inside the function should refer to the argument.

This is not the case for AppleClang 12.0.0. Luckily the workaround
is simple enough; just rename the argument. Given that the function
is 3 lines and uncomplicated, the change of the name doesn't really
affect readability.

Still, WTF AppleClang?

Closes #2030
This commit is contained in:
Martin Hořeňovský 2020-10-02 23:22:49 +02:00
parent fba0feeba1
commit 7c75ecaef4
No known key found for this signature in database
GPG Key ID: DE48307B8B0D381A

View File

@ -22,10 +22,10 @@ namespace Catch {
namespace { namespace {
struct TestHasher { struct TestHasher {
explicit TestHasher(Catch::SimplePcg32& rng) { explicit TestHasher(Catch::SimplePcg32& rng_instance) {
basis = rng(); basis = rng_instance();
basis <<= 32; basis <<= 32;
basis |= rng(); basis |= rng_instance();
} }
uint64_t basis; uint64_t basis;