aboutsummaryrefslogtreecommitdiff
path: root/test/SemaObjCXX/deduction.mm
blob: 0d2fc06dc35ac827ab677a34e43a8e3b4c3ee00e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// RUN: %clang_cc1 -fsyntax-only -verify %s

@class NSString;

// Reduced from WebKit.
namespace test0 {
  template <typename T> struct RemovePointer {
    typedef T Type;
  };

  template <typename T> struct RemovePointer<T*> {
    typedef T Type;
  };

  template <typename T> struct RetainPtr {
    typedef typename RemovePointer<T>::Type ValueType;
    typedef ValueType* PtrType;
    RetainPtr(PtrType ptr);
  };
 
  void test(NSString *S) {
    RetainPtr<NSString*> ptr(S);
  }

  void test(id S) {
    RetainPtr<id> ptr(S);
  }
}