Clang Project

clang_source_code/test/SemaObjCXX/conversion-to-objc-pointer.mm
1// RUN: %clang_cc1 -fsyntax-only -verify %s
2// expected-no-diagnostics
3// rdar: // 7963410
4
5template<class T>
6class TNSAutoRef
7{
8public:
9 TNSAutoRef(T t)
10 : fRef(t)
11 { }
12
13 ~TNSAutoRef()
14 {  }
15
16 operator T() const
17 { return fRef; }
18
19 T Get() const
20 { return fRef; }
21
22private:
23 T fRef;
24};
25
26@interface NSObject
27- (id) alloc;
28- (id)init;
29@end
30
31@interface TFoo : NSObject
32- (void) foo;
33@end
34
35@implementation TFoo
36- (void) foo {}
37@end
38
39@interface TBar : NSObject
40- (void) foo;
41@end
42
43@implementation TBar 
44- (void) foo {}
45@end
46
47int main () {
48 TNSAutoRef<TBar*> bar([[TBar alloc] init]);
49 [bar foo];
50 return 0;
51}
52