template-1.mm

来自「Mac OS X 10.4.9 for x86 Source Code gcc」· MM 代码 · 共 50 行

MM
50
字号
// APPLE LOCAL file mainline/* Test for using ObjC classes as C++ template parameters.  *//* Author:  Ziemowit Laski <zlaski@apple.com>.  *//* { dg-do run } */#include <objc/Object.h>#include <stdlib.h>#define CHECK_IF(expr) if(!(expr)) abort()@interface Base: Object- (int) meth;@end@interface Derived: Base   - (int) meth;                @endstatic int count = 0;template <class T> struct Templ{	T *m;	int i;	Templ(): i(55), m([[T alloc] init]) { count++; }	~Templ() { [m free]; count--; }};@implementation Base- (int) meth { return 333; }@end@implementation Derived- (int) meth { return 666; }@end	int main (void) {    CHECK_IF(count == 0);    {      Templ<Derived> derived;      CHECK_IF(derived.i == 55 && count == 1);      Templ<Base> base;      CHECK_IF(base.i == 55 && count == 2);      CHECK_IF([base.m meth] == 333);      CHECK_IF([derived.m meth] == 666);    }    CHECK_IF(count == 0);    return 0;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?