diff options
| author | Eric Fiselier <eric@efcs.ca> | 2017-04-13 00:50:45 +0000 |
|---|---|---|
| committer | Eric Fiselier <eric@efcs.ca> | 2017-04-13 00:50:45 +0000 |
| commit | 4104cf8257717c068622383441ee37bacaa1b74a (patch) | |
| tree | 99f78be651a0cf834d7c3018b04567dccc7da363 | |
| parent | 29a0f0db9ebb58f1b6fdb2614654be4ea72134cd (diff) | |
| download | bcm5719-llvm-4104cf8257717c068622383441ee37bacaa1b74a.tar.gz bcm5719-llvm-4104cf8257717c068622383441ee37bacaa1b74a.zip | |
Fix the default constructibility of __compressed_pair.
This patch fixes a bug where the =default default ctor for
__compressed_pair was incorrect for const qualified types.
llvm-svn: 300152
| -rw-r--r-- | libcxx/include/memory | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/libcxx/include/memory b/libcxx/include/memory index 068876542a6..f18471315a1 100644 --- a/libcxx/include/memory +++ b/libcxx/include/memory @@ -2079,7 +2079,13 @@ struct __compressed_pair_elem { typedef const _Tp& const_reference; #ifndef _LIBCPP_CXX03_LANG - __compressed_pair_elem() = default; + template <bool _Dummy = true, class = typename enable_if< + __dependent_type<is_default_constructible<_Tp>, _Dummy>::value + >::type + > + _LIBCPP_CONSTEXPR __compressed_pair_elem() + _NOEXCEPT_(is_nothrow_default_constructible<_Tp>::value) + : __value_() {} template <class _Up, class = typename enable_if< !is_same<__compressed_pair_elem, _Up>::value>::type> @@ -2112,7 +2118,7 @@ struct __compressed_pair_elem<_Tp, _Idx, true> : private _Tp { typedef _Tp __value_type; #ifndef _LIBCPP_CXX03_LANG - __compressed_pair_elem() = default; + _LIBCPP_CONSTEXPR __compressed_pair_elem() = default; template <class _Up, class = typename enable_if< !is_same<__compressed_pair_elem, _Up>::value>::type> |

