Fix PR30260 - optional<const T> not working.
authorEric Fiselier <eric@efcs.ca>
Wed, 7 Sep 2016 01:56:07 +0000 (01:56 +0000)
committerEric Fiselier <eric@efcs.ca>
Wed, 7 Sep 2016 01:56:07 +0000 (01:56 +0000)
commitc1d527d3d832cac86eb9461dcef978011ef8caeb
tree8c68a5f8183f4a6af52acbdc1ed67f469e6e9ef7
parentedd0a7023f32a94f211201156fdc8ddf16bd85b2
Fix PR30260 - optional<const T> not working.

This patch fixes PR30260 by using a (void*) cast on the placement argument
to placement new to casts away the const. See also http://llvm.org/PR30260.

As a drive by change this patch also changes the header guard for
<experimental/optional> to _LIBCPP_EXPERIMENTAL_OPTIONAL from _LIBCPP_OPTIONAL.

llvm-svn: 280775
libcxx/include/experimental/optional
libcxx/test/std/experimental/optional/optional.object/optional.object.assign/assign_value.pass.cpp
libcxx/test/std/experimental/optional/optional.object/optional.object.assign/copy.pass.cpp
libcxx/test/std/experimental/optional/optional.object/optional.object.assign/emplace.pass.cpp
libcxx/test/std/experimental/optional/optional.object/optional.object.assign/emplace_initializer_list.pass.cpp
libcxx/test/std/experimental/optional/optional.object/optional.object.assign/move.pass.cpp
libcxx/test/std/experimental/optional/optional.object/optional.object.ctor/copy.pass.cpp
libcxx/test/std/experimental/optional/optional.object/optional.object.ctor/move.pass.cpp
libcxx/test/std/experimental/optional/optional.object/optional.object.swap/swap.pass.cpp