Workaround Clang bug regarding template template parameters
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300411 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -46,17 +46,23 @@ using EnableIfNotSame = typename std::enable_if<
|
|||||||
!std::is_same<typename std::decay<T>::type, typename std::decay<U>::type>::value
|
!std::is_same<typename std::decay<T>::type, typename std::decay<U>::type>::value
|
||||||
>::type;
|
>::type;
|
||||||
|
|
||||||
template <template <int> class Templ, class Other>
|
template <class Templ, class Other>
|
||||||
struct is_specialization : std::false_type {};
|
struct is_specialization;
|
||||||
|
|
||||||
template <template <int> class Templ, int ID>
|
template <template <int> class Templ, int ID1, class Other>
|
||||||
struct is_specialization<Templ, Templ<ID> > : std::true_type {};
|
struct is_specialization<Templ<ID1>, Other> : std::false_type {};
|
||||||
|
|
||||||
template <template <int> class Templ, class Other>
|
template <template <int> class Templ, int ID1, int ID2>
|
||||||
|
struct is_specialization<Templ<ID1>, Templ<ID2> > : std::true_type {};
|
||||||
|
|
||||||
|
template <class Templ, class Other>
|
||||||
using EnableIfSpecialization = typename std::enable_if<
|
using EnableIfSpecialization = typename std::enable_if<
|
||||||
is_specialization<Templ, typename std::decay<Other>::type >::value
|
is_specialization<Templ, typename std::decay<Other>::type >::value
|
||||||
>::type;
|
>::type;
|
||||||
|
|
||||||
|
template <int ID> struct TrackingDeleter;
|
||||||
|
template <int ID> struct ConstTrackingDeleter;
|
||||||
|
|
||||||
template <int ID>
|
template <int ID>
|
||||||
struct TrackingDeleter {
|
struct TrackingDeleter {
|
||||||
TrackingDeleter() : arg_type(&makeArgumentID<>()) {}
|
TrackingDeleter() : arg_type(&makeArgumentID<>()) {}
|
||||||
|
|||||||
Reference in New Issue
Block a user