1e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/*
2e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * It is known that this code not compiled by following compilers:
3e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott *
4e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott *   MSVC 6
5e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott *
6e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * It is known that this code compiled by following compilers:
7e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott *
8e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott *   MSVC 8
9e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott *   gcc 4.1.1
10e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */
11e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
12e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/*
13e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * This code represent what STLport waits from a compiler which support
14e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * the partial template function ordering (!_STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER)
15e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */
16e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
17e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scotttemplate <class T1>
18e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottstruct template_struct {};
19e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
20e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scotttemplate <class T1>
21e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottint func(T1 p1);
22e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
23e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scotttemplate <class T1>
24e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottint func(template_struct<T1>);
25e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
26e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
27e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottint foo()
28e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{
29e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  int tmp1 = 0;
30e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  template_struct<int> tmp2;
31e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  func(tmp1);
32e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  func(tmp2);
33e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  return 0;
34e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott}
35