177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#include <vector>
277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#include <list>
377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (STLPORT) && !defined (_STLP_NO_EXTENSIONS)
477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#  include <slist>
577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif
677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#include <deque>
777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#include <set>
877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#include <iterator>
977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
1077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#include "cppunit/cppunit_proxy.h"
1177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
1277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES)
1377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerusing namespace std;
1477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif
1577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
1677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner//
1777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// TestCase class
1877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner//
1977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerclass PtrSpecTest : public CPPUNIT_NS::TestCase
2077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner{
2177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  CPPUNIT_TEST_SUITE(PtrSpecTest);
2277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  CPPUNIT_TEST(ptr_specialization_test);
2377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  CPPUNIT_TEST(function_pointer);
2477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  CPPUNIT_TEST_SUITE_END();
2577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
2677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerprotected:
2777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  /// this seems to be compile only test but...
2877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  void ptr_specialization_test();
2977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  void function_pointer();
3077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
3177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  template <class _Tp>
3277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  struct unary_pred {
3377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    bool operator () (_Tp *__ptr) const {
3477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner     return *__ptr == 0;
3577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    }
3677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  };
3777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
3877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  template <class _Tp>
3977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  struct binary_pred {
4077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    bool operator () (_Tp *__first, _Tp *__second) const {
4177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner      return *__first < *__second;
4277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    }
4377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  };
4477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner};
4577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
4677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' TurnerCPPUNIT_TEST_SUITE_REGISTRATION(PtrSpecTest);
4777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
4877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#define TEST_INSTANCIATE_CONTAINER(cont) \
4977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  template class cont<int*>; \
5077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  template class cont<int const*>; \
5177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  template class cont<int volatile*>; \
5277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  template class cont<int const volatile*>
5377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
5477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined(_MSC_VER) || (_MSC_VER > 1200)  // excluding MSVC 6.0
5577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' TurnerTEST_INSTANCIATE_CONTAINER(vector);
5677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' TurnerTEST_INSTANCIATE_CONTAINER(list);
5777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#  if defined (STLPORT) && !defined (_STLP_NO_EXTENSIONS)
5877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' TurnerTEST_INSTANCIATE_CONTAINER(slist);
5977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#  endif
6077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' TurnerTEST_INSTANCIATE_CONTAINER(deque);
6177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' TurnerTEST_INSTANCIATE_CONTAINER(set);
6277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' TurnerTEST_INSTANCIATE_CONTAINER(multiset);
6377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif
6477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
6577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner//Function to test pointer to function support:
6677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnervoid FTypeInstance() {}
6777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
6877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner//Class to test pointer to member method support:
6977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerclass AClass {
7077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerpublic:
7177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  void func() {}
7277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner};
7377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
7477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner//
7577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// tests implementation
7677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner//
7777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnervoid PtrSpecTest::ptr_specialization_test()
7877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner{
7977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  int *int_array[] = {0, 0, 0};
8077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  int const* cint_array[] = {0, 0, 0};
8177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
8277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  {
8377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    vector<void*> void_vect;
8477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    deque<void*> void_deque;
8577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    list<void*> void_list;
8677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (STLPORT) && !defined (_STLP_NO_EXTENSIONS)
8777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    slist<void*> void_slist;
8877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif
8977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
9077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
9177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  {
9277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    typedef void (*FType)();
9377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    vector<FType> func_vector;
9477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    func_vector.push_back(&FTypeInstance);
9577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
9677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
9777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined(__GNUC__) || (__GNUC__ > 2)
9877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  {
9977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    typedef void (AClass::*MFType)();
10077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    vector<MFType> mem_func_vector;
10177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    mem_func_vector.push_back(&AClass::func);
10277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
10377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif
10477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
10577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  vector<int*> pint_vect;
10677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  vector<int*> pint_vect2;
10777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  vector<int const*> pcint_vect;
10877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  list<int*> pint_list;
10977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  list<int*> pint_list2;
11077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  list<int const*> pcint_list;
11177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (STLPORT) && !defined (_STLP_NO_EXTENSIONS)
11277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  slist<int*> pint_slist;
11377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  slist<int*> pint_slist2;
11477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  slist<int const*> pcint_slist;
11577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif
11677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  deque<int*> pint_deque;
11777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  deque<int*> pint_deque2;
11877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  deque<int const*> pcint_deque;
11977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
12077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (STLPORT) || defined (_STLP_MEMBER_TEMPLATES)
12177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  vector<int*> pint_vect_from_list(pint_list.begin(), pint_list.end());
12277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif
12377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pint_vect.insert(pint_vect.end(), pint_vect2.begin(), pint_vect2.end());
12477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pint_vect.insert(pint_vect.end(), int_array, int_array + 3);
12577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pint_vect2.insert(pint_vect2.end(), int_array, int_array + 3);
12677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pcint_vect.insert(pcint_vect.end(), int_array, int_array + 3);
12777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pcint_vect.insert(pcint_vect.end(), cint_array, cint_array + 3);
12877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (STLPORT) || !defined(_STLP_DEBUG) || defined(_STLP_MEMBER_TEMPLATES)
12977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pcint_vect.insert(pcint_vect.end(), pint_vect2.begin(), pint_vect2.end());
13077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif
13177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pcint_vect.insert(pcint_vect.end(), int_array, int_array + 3);
13277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (STLPORT) || defined (_STLP_MEMBER_TEMPLATES)
13377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pint_vect.insert(pint_vect.end(), pint_list.begin(), pint_list.end());
13477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pcint_vect.insert(pcint_vect.end(), pint_list.begin(), pint_list.end());
13577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pcint_vect.insert(pcint_vect.end(), pcint_list.begin(), pcint_list.end());
13677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pint_vect.assign(pint_list.begin(), pint_list.end());
13777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pcint_vect.assign(pint_list.begin(), pint_list.end());
13877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif
13977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pint_vect.assign(int_array, int_array + 3);
14077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pcint_vect.assign(int_array, int_array + 3);
14177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pcint_vect.assign(cint_array, cint_array + 3);
14277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  copy(int_array, int_array + 3, back_inserter(pint_vect));
14377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
14477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (STLPORT) || defined (_STLP_MEMBER_TEMPLATES)
14577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pint_list.sort(binary_pred<int>());
14677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pcint_list.sort(binary_pred<int const>());
14777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pint_list.unique(binary_pred<int>());
14877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pcint_list.unique(binary_pred<int const>());
14977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pint_list.merge(pint_list, binary_pred<int>());
15077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pcint_list.merge(pcint_list, binary_pred<int const>());
15177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pint_list.remove_if(unary_pred<int>());
15277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pcint_list.remove_if(unary_pred<int const>());
15377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif
15477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
15577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  copy(int_array, int_array + 3, back_inserter(pint_list));
15677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  copy(int_array, int_array + 3, back_inserter(pint_list2));
15777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pint_list.insert(pint_list.end(), pint_list2.begin(), pint_list2.end());
15877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (STLPORT) || defined (_STLP_MEMBER_TEMPLATES)
15977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pcint_list.insert(pcint_list.end(), pint_list.begin(), pint_list.end());
16077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif
16177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (STLPORT) || !defined(_STLP_DEBUG) || defined(_STLP_MEMBER_TEMPLATES)
16277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pint_list.insert(pint_list.end(), pint_vect.begin(), pint_vect.end());
16377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pcint_list.insert(pcint_list.end(), pint_vect.begin(), pint_vect.end());
16477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pcint_list.insert(pcint_list.end(), pcint_vect.begin(), pcint_vect.end());
16577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  list<int*> pint_list_from_vect(pint_vect.begin(), pint_vect.end());
16677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pint_list.assign(pint_vect.begin(), pint_vect.end());
16777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pcint_list.assign(pint_vect.begin(), pint_vect.end());
16877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif
16977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pint_list.insert(pint_list.begin(), int_array, int_array + 3);
17077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pint_list.insert(pint_list.end(), int_array, int_array + 3);
17177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pcint_list.insert(pcint_list.end(), int_array, int_array + 3);
17277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pcint_list.insert(pcint_list.end(), cint_array, cint_array + 3);
17377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pint_list.assign(int_array, int_array + 3);
17477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pcint_list.assign(int_array, int_array + 3);
17577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pcint_list.assign(cint_array, cint_array + 3);
17677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  //pint_list.assign(pcint_vect.begin(), pcint_vect.end());
17777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
17877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (STLPORT) && !defined (_STLP_NO_EXTENSIONS)
17977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  copy(int_array, int_array + 3, front_inserter(pint_slist));
18077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  copy(int_array, int_array + 3, front_inserter(pint_slist2));
18177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pint_slist.insert(pint_slist.end(), pint_slist2.begin(), pint_slist2.end());
18277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#  if defined (_STLP_MEMBER_TEMPLATES)
18377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pcint_slist.insert(pcint_slist.end(), pint_slist.begin(), pint_slist.end());
18477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#  endif
18577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#  if !defined (_STLP_DEBUG) || defined (_STLP_MEMBER_TEMPLATES)
18677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pint_slist.insert(pint_slist.end(), pint_vect.begin(), pint_vect.end());
18777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pcint_slist.insert(pcint_slist.end(), pint_vect.begin(), pint_vect.end());
18877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pcint_slist.insert(pcint_slist.end(), pcint_vect.begin(), pcint_vect.end());
18977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  slist<int*> pint_slist_from_vect(pint_vect.begin(), pint_vect.end());
19077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pint_slist.assign(pint_vect.begin(), pint_vect.end());
19177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pcint_slist.assign(pint_vect.begin(), pint_vect.end());
19277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#  endif
19377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pint_slist.insert(pint_slist.end(), int_array, int_array + 3);
19477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pcint_slist.insert(pcint_slist.end(), int_array, int_array + 3);
19577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pcint_slist.insert(pcint_slist.end(), cint_array, cint_array + 3);
19677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pint_slist.assign(int_array, int_array + 3);
19777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pcint_slist.assign(int_array, int_array + 3);
19877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pcint_slist.assign(cint_array, cint_array + 3);
19977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  //pint_slist.assign(pcint_vect.begin(), pcint_vect.end());
20077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif
20177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
20277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  copy(int_array, int_array + 3, back_inserter(pint_deque));
20377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  copy(int_array, int_array + 3, back_inserter(pint_deque2));
20477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pint_deque.insert(pint_deque.end(), pint_deque2.begin(), pint_deque2.end());
20577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (STLPORT) || defined (_STLP_MEMBER_TEMPLATES)
20677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pcint_deque.insert(pcint_deque.end(), pint_deque.begin(), pint_deque.end());
20777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif
20877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (STLPORT) || !defined(_STLP_DEBUG) || defined(_STLP_MEMBER_TEMPLATES)
20977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pint_deque.insert(pint_deque.end(), pint_vect.begin(), pint_vect.end());
21077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pcint_deque.insert(pcint_deque.end(), pint_vect.begin(), pint_vect.end());
21177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pcint_deque.insert(pcint_deque.end(), pcint_vect.begin(), pcint_vect.end());
21277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  deque<int*> pint_deque_from_vect(pint_vect.begin(), pint_vect.end());
21377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pint_deque.assign(pint_vect.begin(), pint_vect.end());
21477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pcint_deque.assign(pint_vect.begin(), pint_vect.end());
21577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif
21677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pint_deque.insert(pint_deque.end(), int_array, int_array + 3);
21777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pcint_deque.insert(pcint_deque.end(), int_array, int_array + 3);
21877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pcint_deque.insert(pcint_deque.end(), cint_array, cint_array + 3);
21977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pint_deque.assign(int_array, int_array + 3);
22077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pcint_deque.assign(int_array, int_array + 3);
22177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  pcint_deque.assign(cint_array, cint_array + 3);
22277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner}
22377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
22477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertypedef void (*Func)(int);
22577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnervoid f1(int) {}
22677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
22777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnervoid PtrSpecTest::function_pointer()
22877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner{
22977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  vector<Func> fs;
23077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  fs.push_back(&f1);
23177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  CPPUNIT_ASSERT( !fs.empty() );
23277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner}
233