git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@146345 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Howard Hinnant 2011-12-11 20:31:33 +00:00
parent c00f75dc75
commit d4cf215e08
5 changed files with 40 additions and 8 deletions

View File

@ -215,7 +215,11 @@ namespace __gnu_cxx {
using namespace std;
template <class _Tp, class _Hash, bool = is_empty<_Hash>::value>
template <class _Tp, class _Hash, bool = is_empty<_Hash>::value
#if __has_feature(is_final)
&& !__is_final(_Hash)
#endif
>
class __hash_map_hasher
: private _Hash
{
@ -247,7 +251,11 @@ public:
{return __hash_(__x);}
};
template <class _Tp, class _Pred, bool = is_empty<_Pred>::value>
template <class _Tp, class _Pred, bool = is_empty<_Pred>::value
#if __has_feature(is_final)
&& !__is_final(_Pred)
#endif
>
class __hash_map_equal
: private _Pred
{

View File

@ -381,7 +381,11 @@ swap(multimap<Key, T, Compare, Allocator>& x,
_LIBCPP_BEGIN_NAMESPACE_STD
template <class _Key, class _Tp, class _Compare, bool = is_empty<_Compare>::value>
template <class _Key, class _Tp, class _Compare, bool = is_empty<_Compare>::value
#if __has_feature(is_final)
&& !__is_final(_Compare)
#endif
>
class __map_value_compare
: private _Compare
{

View File

@ -1848,8 +1848,16 @@ public:
template <class _T1, class _T2, bool = is_same<typename remove_cv<_T1>::type,
typename remove_cv<_T2>::type>::value,
bool = is_empty<_T1>::value,
bool = is_empty<_T2>::value>
bool = is_empty<_T1>::value
#if __has_feature(is_final)
&& !__is_final(_T1)
#endif
,
bool = is_empty<_T2>::value
#if __has_feature(is_final)
&& !__is_final(_T2)
#endif
>
struct __libcpp_compressed_pair_switch;
template <class _T1, class _T2, bool IsSame>

View File

@ -146,7 +146,11 @@ public:
// __tuple_leaf
template <size_t _Ip, class _Hp, bool=is_empty<_Hp>::value>
template <size_t _Ip, class _Hp, bool=is_empty<_Hp>::value
#if __has_feature(is_final)
&& !__is_final(_Hp)
#endif
>
class __tuple_leaf;
template <size_t _Ip, class _Hp, bool _Ep>

View File

@ -325,7 +325,11 @@ template <class Key, class T, class Hash, class Pred, class Alloc>
_LIBCPP_BEGIN_NAMESPACE_STD
template <class _Tp, class _Hash, bool = is_empty<_Hash>::value>
template <class _Tp, class _Hash, bool = is_empty<_Hash>::value
#if __has_feature(is_final)
&& !__is_final(_Hash)
#endif
>
class __unordered_map_hasher
: private _Hash
{
@ -371,7 +375,11 @@ public:
{return __hash_(__x);}
};
template <class _Tp, class _Pred, bool = is_empty<_Pred>::value>
template <class _Tp, class _Pred, bool = is_empty<_Pred>::value
#if __has_feature(is_final)
&& !__is_final(_Pred)
#endif
>
class __unordered_map_equal
: private _Pred
{