diff options
author | Louis Dionne <ldionne@apple.com> | 2018-11-19 15:37:04 +0000 |
---|---|---|
committer | Louis Dionne <ldionne@apple.com> | 2018-11-19 15:37:04 +0000 |
commit | 8a063df19435af25eadd30734be1b76275cbb56b (patch) | |
tree | 7de98d729291dc7bc5d4a790cfea9618bdd3c4ca /libcxx/include/variant | |
parent | 08c0a0ac58764944adf5b116c82c2bc98ac6df1a (diff) | |
download | bcm5719-llvm-8a063df19435af25eadd30734be1b76275cbb56b.tar.gz bcm5719-llvm-8a063df19435af25eadd30734be1b76275cbb56b.zip |
[libcxx] Add availability markup for bad_optional_access, bad_variant_access and bad_any_cast
Reviewers: dexonsmith, EricWF
Subscribers: christof, arphaman, libcxx-commits
Differential Revision: https://reviews.llvm.org/D53256
llvm-svn: 347219
Diffstat (limited to 'libcxx/include/variant')
-rw-r--r-- | libcxx/include/variant | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/libcxx/include/variant b/libcxx/include/variant index f9505bf2711..b33b1c40ae5 100644 --- a/libcxx/include/variant +++ b/libcxx/include/variant @@ -219,7 +219,7 @@ _LIBCPP_PUSH_MACROS namespace std { // explicitly not using versioning namespace -class _LIBCPP_EXCEPTION_ABI bad_variant_access : public exception { +class _LIBCPP_EXCEPTION_ABI _LIBCPP_AVAILABILITY_BAD_VARIANT_ACCESS bad_variant_access : public exception { public: virtual const char* what() const _NOEXCEPT; }; @@ -232,6 +232,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD _LIBCPP_NORETURN inline _LIBCPP_INLINE_VISIBILITY +_LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS void __throw_bad_variant_access() { #ifndef _LIBCPP_NO_EXCEPTIONS throw bad_variant_access(); @@ -1321,6 +1322,7 @@ constexpr bool holds_alternative(const variant<_Types...>& __v) noexcept { template <size_t _Ip, class _Vp> inline _LIBCPP_INLINE_VISIBILITY +_LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS constexpr auto&& __generic_get(_Vp&& __v) { using __variant_detail::__access::__variant; if (!__holds_alternative<_Ip>(__v)) { @@ -1331,6 +1333,7 @@ constexpr auto&& __generic_get(_Vp&& __v) { template <size_t _Ip, class... _Types> inline _LIBCPP_INLINE_VISIBILITY +_LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS constexpr variant_alternative_t<_Ip, variant<_Types...>>& get( variant<_Types...>& __v) { static_assert(_Ip < sizeof...(_Types)); @@ -1340,6 +1343,7 @@ constexpr variant_alternative_t<_Ip, variant<_Types...>>& get( template <size_t _Ip, class... _Types> inline _LIBCPP_INLINE_VISIBILITY +_LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS constexpr variant_alternative_t<_Ip, variant<_Types...>>&& get( variant<_Types...>&& __v) { static_assert(_Ip < sizeof...(_Types)); @@ -1349,6 +1353,7 @@ constexpr variant_alternative_t<_Ip, variant<_Types...>>&& get( template <size_t _Ip, class... _Types> inline _LIBCPP_INLINE_VISIBILITY +_LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS constexpr const variant_alternative_t<_Ip, variant<_Types...>>& get( const variant<_Types...>& __v) { static_assert(_Ip < sizeof...(_Types)); @@ -1358,6 +1363,7 @@ constexpr const variant_alternative_t<_Ip, variant<_Types...>>& get( template <size_t _Ip, class... _Types> inline _LIBCPP_INLINE_VISIBILITY +_LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS constexpr const variant_alternative_t<_Ip, variant<_Types...>>&& get( const variant<_Types...>&& __v) { static_assert(_Ip < sizeof...(_Types)); @@ -1367,6 +1373,7 @@ constexpr const variant_alternative_t<_Ip, variant<_Types...>>&& get( template <class _Tp, class... _Types> inline _LIBCPP_INLINE_VISIBILITY +_LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS constexpr _Tp& get(variant<_Types...>& __v) { static_assert(!is_void_v<_Tp>); return _VSTD::get<__find_exactly_one_t<_Tp, _Types...>::value>(__v); @@ -1374,6 +1381,7 @@ constexpr _Tp& get(variant<_Types...>& __v) { template <class _Tp, class... _Types> inline _LIBCPP_INLINE_VISIBILITY +_LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS constexpr _Tp&& get(variant<_Types...>&& __v) { static_assert(!is_void_v<_Tp>); return _VSTD::get<__find_exactly_one_t<_Tp, _Types...>::value>( @@ -1382,6 +1390,7 @@ constexpr _Tp&& get(variant<_Types...>&& __v) { template <class _Tp, class... _Types> inline _LIBCPP_INLINE_VISIBILITY +_LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS constexpr const _Tp& get(const variant<_Types...>& __v) { static_assert(!is_void_v<_Tp>); return _VSTD::get<__find_exactly_one_t<_Tp, _Types...>::value>(__v); @@ -1389,6 +1398,7 @@ constexpr const _Tp& get(const variant<_Types...>& __v) { template <class _Tp, class... _Types> inline _LIBCPP_INLINE_VISIBILITY +_LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS constexpr const _Tp&& get(const variant<_Types...>&& __v) { static_assert(!is_void_v<_Tp>); return _VSTD::get<__find_exactly_one_t<_Tp, _Types...>::value>( @@ -1521,6 +1531,7 @@ constexpr bool operator>=(const variant<_Types...>& __lhs, template <class _Visitor, class... _Vs> inline _LIBCPP_INLINE_VISIBILITY +_LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS constexpr decltype(auto) visit(_Visitor&& __visitor, _Vs&&... __vs) { using __variant_detail::__visitation::__variant; bool __results[] = {__vs.valueless_by_exception()...}; |