Summary:
`dynamic` is one of the few unfortunate recursive types that have a constructor of the form `T(initializer_list<T>)`. 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
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};