fntemp14.c

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

C
90
字号
#include "fail.h"

template <class T>
    T inc0( T x ) {
	return x + 1;
    }
template <class T>
    T inc1( T x ) {
	return inc0( x );
    }
template <class T>
    T inc2( T x ) {
	return inc1( x );
    }
template <class T>
    T inc3( T x ) {
	return inc2( x );
    }
template <class T>
    T inc4( T x ) {
	return inc3( x );
    }

int foo( int i ) {
    return inc4(i);
}
#if __WATCOM_REVISION__ >= 8
namespace x {
    namespace y {
	template <class T>
	    T inc0( T x ) {
		return x + 1;
	    }
	template <class T>
	    T inc1( T x ) {
		return inc0( x );
	    }
	template <class T>
	    T inc2( T x ) {
		return inc1( x );
	    }
	template <class T>
	    T inc3( T x ) {
		return inc2( x );
	    }
	template <class T>
	    T inc4( T x ) {
		return inc3( x );
	    }
	
	int foo( int i ) {
	    return inc4(i);
	}
    }
    template <class T>
	T inc0( T x ) {
	    return x + 1;
	}
    template <class T>
	T inc1( T x ) {
	    return inc0( x );
	}
    template <class T>
	T inc2( T x ) {
	    return inc1( x );
	}
    template <class T>
	T inc3( T x ) {
	    return inc2( x );
	}
    template <class T>
	T inc4( T x ) {
	    return inc3( x );
	}
    
    int foo( int i ) {
	return inc4(i);
    }
}
#endif

int main() {
    if( foo( 1 ) != 2 ) fail(__LINE__);
#if __WATCOM_REVISION__ >= 8
    if( x::foo( 1 ) != 2 ) fail(__LINE__);
    if( x::y::foo( 1 ) != 2 ) fail(__LINE__);
#endif
    _PASS;
}

⌨️ 快捷键说明

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