| Index: third_party/WebKit/Source/wtf/TypeTraitsTest.cpp
|
| diff --git a/third_party/WebKit/Source/wtf/TypeTraitsTest.cpp b/third_party/WebKit/Source/wtf/TypeTraitsTest.cpp
|
| index 165ec0d5c1c1c24f09562906bec8962e49e9d938..66c82d03ddb703118a5be39a9860595f600e0143 100644
|
| --- a/third_party/WebKit/Source/wtf/TypeTraitsTest.cpp
|
| +++ b/third_party/WebKit/Source/wtf/TypeTraitsTest.cpp
|
| @@ -180,6 +180,42 @@ static_assert(!IsTriviallyDefaultConstructible<DefaultConstructorDeleted>::value
|
| static_assert(!IsTriviallyDestructible<DestructorDeleted>::value,
|
| "DestructorDeleted must not be trivially destructible.");
|
|
|
| +template<typename T>
|
| +class Wrapper
|
| +{
|
| +public:
|
| + template<typename U>
|
| + Wrapper(const Wrapper<U>&, EnsurePtrConvertibleArgDecl(U, T))
|
| + {
|
| + }
|
| +};
|
| +
|
| +class ForwardDeclarationOnlyClass;
|
| +
|
| +static_assert(std::is_convertible<Wrapper<TestDerivedClass>, Wrapper<TestDerivedClass>>::value,
|
| + "EnsurePtrConvertibleArgDecl<T, T> should pass");
|
| +
|
| +static_assert(std::is_convertible<Wrapper<TestDerivedClass>, Wrapper<const TestDerivedClass>>::value,
|
| + "EnsurePtrConvertibleArgDecl<T, const T> should pass");
|
| +
|
| +static_assert(!std::is_convertible<Wrapper<const TestDerivedClass>, Wrapper<TestDerivedClass>>::value,
|
| + "EnsurePtrConvertibleArgDecl<const T, T> should not pass");
|
| +
|
| +static_assert(std::is_convertible<Wrapper<ForwardDeclarationOnlyClass>, Wrapper<ForwardDeclarationOnlyClass>>::value,
|
| + "EnsurePtrConvertibleArgDecl<T, T> should pass if T is not a complete type");
|
| +
|
| +static_assert(std::is_convertible<Wrapper<ForwardDeclarationOnlyClass>, Wrapper<const ForwardDeclarationOnlyClass>>::value,
|
| + "EnsurePtrConvertibleArgDecl<T, const T> should pass if T is not a complete type");
|
| +
|
| +static_assert(!std::is_convertible<Wrapper<const ForwardDeclarationOnlyClass>, Wrapper<ForwardDeclarationOnlyClass>>::value,
|
| + "EnsurePtrConvertibleArgDecl<const T, T> should not pass if T is not a complete type");
|
| +
|
| +static_assert(std::is_convertible<Wrapper<TestDerivedClass>, Wrapper<TestBaseClass<int>>>::value,
|
| + "EnsurePtrConvertibleArgDecl<U, T> should pass if U is a subclass of T");
|
| +
|
| +static_assert(!std::is_convertible<Wrapper<TestBaseClass<int>>, Wrapper<TestDerivedClass>>::value,
|
| + "EnsurePtrConvertibleArgDecl<U, T> should not pass if U is a base class of T");
|
| +
|
| } // anonymous namespace
|
|
|
| } // namespace WTF
|
|
|