ns27.c

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

C
47
字号
#include "fail.h"

#ifdef __WATCOM_NAMESPACE__
namespace a {
    int foo( int );
    char foo( char x ) {
	return x + 1;
    }
    double foo( double );
    int bar( int x ) {
	return -x;
    }
};
namespace b {
    using a::foo;
    using a::bar;
    int dummy;
    template <char (*f)( char ), int (*b)(int)>
	struct S {
	    int foo( char c ) {
		return b(f(c));
	    }
	    ~S() { ++dummy; }
	};
    template <char f( char ), int b(int)>
	struct R {
	    int foo( char c ) {
		return b(f(c));
	    }
	    ~R() { ++dummy; }
	};

    S<foo,bar> x;
    R<foo,bar> y;
};
using b::x;
using b::y;

int main() {
    if( x.foo( 'a' ) != -('a'+1) ) _fail;
    if( y.foo( 'b' ) != -('b'+1) ) _fail;
    _PASS;
}
#else
ALWAYS_PASS
#endif

⌨️ 快捷键说明

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