From 015ca6784d05629941c24ecb1149c84e7329720e Mon Sep 17 00:00:00 2001 From: Giuseppe Ottaviano Date: Wed, 23 Dec 2015 12:07:16 -0800 Subject: [PATCH] Fix test Dynamic.ArrayReassignment with Clang 3.7 Summary: `dynamic` is one of the few unfortunate recursive types that have a constructor of the form `T(initializer_list)`. After the Defect Report 95 (http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1467) a statement `T t = {v};` where `v` is of type `T` invokes the copy constructor instead of the initializer list constructor. Clang 3.7 implements the new behavior, and GCC probably will soon. This diff only fixes a test where the ambiguous syntax is used, but a better solution would be preferable. Reviewed By: philippv Differential Revision: D2786455 fb-gh-sync-id: 7fa5235e4041cbc8dd3ce685b5a0c23c343f78d2 --- folly/test/DynamicTest.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/folly/test/DynamicTest.cpp b/folly/test/DynamicTest.cpp index 83e21cf6..a065e14b 100644 --- a/folly/test/DynamicTest.cpp +++ b/folly/test/DynamicTest.cpp @@ -232,7 +232,9 @@ TEST(Dynamic, DeepCopy) { TEST(Dynamic, ArrayReassignment) { dynamic o = 1; - dynamic d1 = {o}; + // After DR95 the single braces dispatch to the copy constructor. + // http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1467 + dynamic d1 = {{o}}; EXPECT_EQ(dynamic::ARRAY, d1.type()); d1 = {o}; -- 2.34.1