Mark non-captured constexpr variable as static
authorChristopher Dykes <cdykes@fb.com>
Wed, 8 Mar 2017 20:38:27 +0000 (12:38 -0800)
committerFacebook Github Bot <facebook-github-bot@users.noreply.github.com>
Wed, 8 Mar 2017 20:52:25 +0000 (12:52 -0800)
Summary:
GCC & Clang allow the use of a non-captured constexpr local within a lambda, MSVC does not.

All 3 compilers allow this when the local has static storage.

Reviewed By: yfeldblum

Differential Revision: D4675147

fbshipit-source-id: 3e07eb77731cbd3ebda6aee4b0b57ac19ac34de5

folly/experimental/test/EliasFanoCodingTest.cpp

index 8ae1425a9f6c6f453f63f627bf14afb8f3b16cea..5517f209e75db1dc40bfd88d5fae2b464c851620 100644 (file)
@@ -46,7 +46,7 @@ uint8_t slowDefaultNumLowerBits(size_t upperBound, size_t size) {
 TEST(EliasFanoCoding, defaultNumLowerBits) {
   // Verify that slowDefaultNumLowerBits and optimized
   // Encoder::defaultNumLowerBits agree.
-  constexpr size_t kNumIterations = 2500;
+  static constexpr size_t kNumIterations = 2500;
   auto compare = [](size_t upperBound, size_t size) {
     using Encoder = EliasFanoEncoderV2<size_t>;
     EXPECT_EQ(int(slowDefaultNumLowerBits(upperBound, size)),