partial_spec.cpp revision e46c9386c4f79aa40185f79a19fc5b2a7ef528b3
1dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen/*
2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch * It is known that this code not compiled by following compilers:
3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch *
4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch *   MSVC 6
5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch *
6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch * It is known that this code compiled by following compilers:
7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch *
83f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen *   MSVC 8
9dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen *   gcc 4.1.1
10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch */
11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch/*
13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch * This code represent what STLport waits from a compiler which support
14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch * the partial template function ordering (!_STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER)
1521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen */
16201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch
17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtemplate <class T1>
18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochstruct template_struct {};
19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
2021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsentemplate <class T1>
21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochint func(T1 p1);
22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtemplate <class T1>
24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochint func(template_struct<T1>);
25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochint foo()
28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch{
29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  int tmp1 = 0;
30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  template_struct<int> tmp2;
31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  func(tmp1);
32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  func(tmp2);
33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  return 0;
34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch