cltemp06.c

来自「开放源码的编译器open watcom 1.6.0版的源代码」· C语言 代码 · 共 58 行

C
58
字号
#include "fail.h"

#if __WATCOM_REVISION__ >= 8
template <class S, class C, class U, class E>
    struct Template {
	struct S *p;
	class C *q;
	union U *u;
	enum E *e;
	class S *__u;
	struct C *__u;
	Template( S *p, C *q, U *u, E *e )
	    : p(p)
	    , q(q)
	    , u(u)
	    , e(e)
	{
	}
	int foo() {
	    return (p->m+q->m+u->m+*e);
	}
    };

struct Struct {
    int __u;
    int m;
};

class Class {
public:
    int __u;
    int m;
};

union Union {
    int f;
    int m;
};

enum Enum {
    A, B, C
};

Struct s = { 0, 1<<1 };
Class c = { 0, 1<<2 };
Union u = { 1 << 3 };
Enum e = B;

Template<Struct,Class,Union,Enum> v(&s,&c,&u,&e);

int main() {
    if( v.foo() != 15 ) fail(__LINE__);
    _PASS;
}
#else
ALWAYS_PASS
#endif

⌨️ 快捷键说明

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