Qualify a couple local constexpr values as 'static' to allow use from within non...
authorChristopher Dykes <cdykes@fb.com>
Sat, 8 Apr 2017 04:15:44 +0000 (21:15 -0700)
committerFacebook Github Bot <facebook-github-bot@users.noreply.github.com>
Sat, 8 Apr 2017 04:19:40 +0000 (21:19 -0700)
Summary: MSVC doesn't allow non-static locals to be accessed within a non-capturing lambda, and some were introduced into the json code.

Reviewed By: yfeldblum

Differential Revision: D4856242

fbshipit-source-id: b2db36ca37a79a41237d39cc7e7b839a5416922f

folly/json.cpp

index ae2f293..ee56f0b 100644 (file)
@@ -615,8 +615,8 @@ std::string serialize(dynamic const& dyn, serialization_opts const& opts) {
 template <class T>
 size_t firstEscapableInWord(T s) {
   static_assert(std::is_unsigned<T>::value, "Unsigned integer required");
-  constexpr T kOnes = ~T() / 255; // 0x...0101
-  constexpr T kMsbs = kOnes * 0x80; // 0x...8080
+  static constexpr T kOnes = ~T() / 255; // 0x...0101
+  static constexpr T kMsbs = kOnes * 0x80; // 0x...8080
 
   // Sets the MSB of bytes < b. Precondition: b < 128.
   auto isLess = [](T w, uint8_t b) {