/*
* It is known that this code not compiled by following compilers:
*
* MSVC 6
*
* It is known that this code compiled by following compilers:
*
* MSVC 8
* gcc 4.1.1
*/
/*
* This code represent what STLport waits from a compiler which support
* the partial template function ordering (!_STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER)
*/
template <class T1>
struct template_struct {};
template <class T1>
int func(T1 p1);
template <class T1>
int func(template_struct<T1>);
int foo()
{
int tmp1 = 0;
template_struct<int> tmp2;
func(tmp1);
func(tmp2);
return 0;
}