svn commit: r313638 - in vendor/libc++/dist: docs include src test/std/utilities/optional/optional.bad_optional_access test/std/utilities/variant/variant.visit
Dimitry Andric
dim at FreeBSD.org
Sat Feb 11 13:25:45 UTC 2017
Author: dim
Date: Sat Feb 11 13:25:42 2017
New Revision: 313638
URL: https://svnweb.freebsd.org/changeset/base/313638
Log:
Vendor import of libc++ release_40 branch r294803:
https://llvm.org/svn/llvm-project/libcxx/branches/release_40@294803
Modified:
vendor/libc++/dist/docs/conf.py
vendor/libc++/dist/include/optional
vendor/libc++/dist/include/variant
vendor/libc++/dist/src/optional.cpp
vendor/libc++/dist/test/std/utilities/optional/optional.bad_optional_access/derive.pass.cpp
vendor/libc++/dist/test/std/utilities/variant/variant.visit/visit.pass.cpp
Modified: vendor/libc++/dist/docs/conf.py
==============================================================================
--- vendor/libc++/dist/docs/conf.py Sat Feb 11 13:25:39 2017 (r313637)
+++ vendor/libc++/dist/docs/conf.py Sat Feb 11 13:25:42 2017 (r313638)
@@ -47,9 +47,9 @@ copyright = u'2011-2017, LLVM Project'
# built documents.
#
# The short X.Y version.
-version = '4.0'
+version = '4'
# The full version, including alpha/beta/rc tags.
-release = '4.0'
+release = '4'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
Modified: vendor/libc++/dist/include/optional
==============================================================================
--- vendor/libc++/dist/include/optional Sat Feb 11 13:25:39 2017 (r313637)
+++ vendor/libc++/dist/include/optional Sat Feb 11 13:25:42 2017 (r313638)
@@ -160,14 +160,12 @@ namespace std // purposefully not using
{
class _LIBCPP_EXCEPTION_ABI bad_optional_access
- : public logic_error
+ : public exception
{
public:
- _LIBCPP_INLINE_VISIBILITY
- bad_optional_access() : logic_error("bad optional access") {}
-
// Get the key function ~bad_optional_access() into the dylib
virtual ~bad_optional_access() _NOEXCEPT;
+ virtual const char* what() const _NOEXCEPT;
};
} // std
Modified: vendor/libc++/dist/include/variant
==============================================================================
--- vendor/libc++/dist/include/variant Sat Feb 11 13:25:39 2017 (r313637)
+++ vendor/libc++/dist/include/variant Sat Feb 11 13:25:42 2017 (r313638)
@@ -574,7 +574,7 @@ private:
constexpr decltype(auto) operator()(_Alts&&... __alts) const {
__std_visit_exhaustive_visitor_check<
_Visitor,
- decltype(_VSTD::forward<_Alts>(__alts).__value)...>();
+ decltype((_VSTD::forward<_Alts>(__alts).__value))...>();
return __invoke_constexpr(_VSTD::forward<_Visitor>(__visitor),
_VSTD::forward<_Alts>(__alts).__value...);
}
Modified: vendor/libc++/dist/src/optional.cpp
==============================================================================
--- vendor/libc++/dist/src/optional.cpp Sat Feb 11 13:25:39 2017 (r313637)
+++ vendor/libc++/dist/src/optional.cpp Sat Feb 11 13:25:42 2017 (r313638)
@@ -15,6 +15,10 @@ namespace std
bad_optional_access::~bad_optional_access() _NOEXCEPT = default;
+const char* bad_optional_access::what() const _NOEXCEPT {
+ return "bad_optional_access";
+ }
+
} // std
_LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL
Modified: vendor/libc++/dist/test/std/utilities/optional/optional.bad_optional_access/derive.pass.cpp
==============================================================================
--- vendor/libc++/dist/test/std/utilities/optional/optional.bad_optional_access/derive.pass.cpp Sat Feb 11 13:25:39 2017 (r313637)
+++ vendor/libc++/dist/test/std/utilities/optional/optional.bad_optional_access/derive.pass.cpp Sat Feb 11 13:25:42 2017 (r313638)
@@ -11,7 +11,7 @@
// <optional>
-// class bad_optional_access : public logic_error
+// class bad_optional_access : public exception
#include <optional>
#include <type_traits>
@@ -20,6 +20,6 @@ int main()
{
using std::bad_optional_access;
- static_assert(std::is_base_of<std::logic_error, bad_optional_access>::value, "");
- static_assert(std::is_convertible<bad_optional_access*, std::logic_error*>::value, "");
+ static_assert(std::is_base_of<std::exception, bad_optional_access>::value, "");
+ static_assert(std::is_convertible<bad_optional_access*, std::exception*>::value, "");
}
Modified: vendor/libc++/dist/test/std/utilities/variant/variant.visit/visit.pass.cpp
==============================================================================
--- vendor/libc++/dist/test/std/utilities/variant/variant.visit/visit.pass.cpp Sat Feb 11 13:25:39 2017 (r313637)
+++ vendor/libc++/dist/test/std/utilities/variant/variant.visit/visit.pass.cpp Sat Feb 11 13:25:42 2017 (r313638)
@@ -283,9 +283,20 @@ void test_exceptions() {
#endif
}
+// See http://llvm.org/PR31916
+void test_caller_accepts_nonconst() {
+ struct A {};
+ struct Visitor {
+ void operator()(A&) {}
+ };
+ std::variant<A> v;
+ std::visit(Visitor{}, v);
+}
+
int main() {
test_call_operator_forwarding();
test_argument_forwarding();
test_constexpr();
test_exceptions();
+ test_caller_accepts_nonconst();
}
More information about the svn-src-all
mailing list