template-1.mm

来自「用于进行gcc测试」· MM 代码 · 共 50 行

MM
50
字号
/* 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 + -
显示快捷键?