1 cv_cxx_has_namespace_std
2 ## GLIBMM_CXX_HAS_NAMESPACE_STD()
4 ## Test whether libstdc++ declares namespace std. For safety,
5 ## also check whether several randomly selected STL symbols
6 ## are available in namespace std.
8 ## On success, #define GLIBMM_HAVE_NAMESPACE_STD to 1.
10 AC_DEFUN([GLIBMM_CXX_HAS_NAMESPACE_STD],
13 [whether C++ library symbols are declared in namespace std],
14 [gtkmm_cv_cxx_has_namespace_std],
26 using std::bidirectional_iterator_tag;
31 [gtkmm_cv_cxx_has_namespace_std="yes"],
32 [gtkmm_cv_cxx_has_namespace_std="no"]
36 if test "x${gtkmm_cv_cxx_has_namespace_std}" = "xyes"; then
38 AC_DEFINE([GLIBMM_HAVE_NAMESPACE_STD],[1], [Defined when the libstdc++ declares the std-namespace])
44 ## GLIBMM_CXX_HAS_STD_ITERATOR_TRAITS()
46 ## Check for standard-conform std::iterator_traits<>, and
47 ## #define GLIBMM_HAVE_STD_ITERATOR_TRAITS on success.
49 AC_DEFUN([GLIBMM_CXX_HAS_STD_ITERATOR_TRAITS],
51 AC_REQUIRE([GLIBMM_CXX_HAS_NAMESPACE_STD])
54 [whether the C++ library supports std::iterator_traits],
55 [gtkmm_cv_cxx_has_std_iterator_traits],
60 #ifdef GLIBMM_HAVE_NAMESPACE_STD
64 typedef iterator_traits<char*>::value_type ValueType;
66 [gtkmm_cv_cxx_has_std_iterator_traits="yes"],
67 [gtkmm_cv_cxx_has_std_iterator_traits="no"]
71 if test "x${gtkmm_cv_cxx_has_std_iterator_traits}" = "xyes"; then
73 AC_DEFINE([GLIBMM_HAVE_STD_ITERATOR_TRAITS],[1], [Defined if std::iterator_traits<> is standard-conforming])
79 ## GLIBMM_CXX_HAS_SUN_REVERSE_ITERATOR()
81 ## Check for Sun libCstd style std::reverse_iterator,
82 ## and #define GLIBMM_HAVE_SUN_REVERSE_ITERATOR if found.
84 AC_DEFUN([GLIBMM_CXX_HAS_SUN_REVERSE_ITERATOR],
86 AC_REQUIRE([GLIBMM_CXX_HAS_NAMESPACE_STD])
89 [for non-standard Sun libCstd reverse_iterator],
90 [gtkmm_cv_cxx_has_sun_reverse_iterator],
95 #ifdef GLIBMM_HAVE_NAMESPACE_STD
99 typedef reverse_iterator<char*,random_access_iterator_tag,char,char&,char*,int> ReverseIter;
101 [gtkmm_cv_cxx_has_sun_reverse_iterator="yes"],
102 [gtkmm_cv_cxx_has_sun_reverse_iterator="no"]
106 if test "x${gtkmm_cv_cxx_has_sun_reverse_iterator}" = "xyes"; then
108 AC_DEFINE([GLIBMM_HAVE_SUN_REVERSE_ITERATOR],[1], [Defined if std::reverse_iterator is in Sun libCstd style])
114 ## GLIBMM_CXX_HAS_TEMPLATE_SEQUENCE_CTORS()
116 ## Check whether the STL containers have templated sequence ctors,
117 ## and #define GLIBMM_HAVE_TEMPLATE_SEQUENCE_CTORS on success.
119 AC_DEFUN([GLIBMM_CXX_HAS_TEMPLATE_SEQUENCE_CTORS],
121 AC_REQUIRE([GLIBMM_CXX_HAS_NAMESPACE_STD])
124 [whether STL containers have templated sequence constructors],
125 [gtkmm_cv_cxx_has_template_sequence_ctors],
132 #ifdef GLIBMM_HAVE_NAMESPACE_STD
136 const int array[8] = { 0, };
137 vector<int> test_vector (&array[0], &array[8]);
138 deque<short> test_deque (test_vector.begin(), test_vector.end());
139 list<long> test_list (test_deque.begin(), test_deque.end());
140 test_vector.assign(test_list.begin(), test_list.end());
142 [gtkmm_cv_cxx_has_template_sequence_ctors="yes"],
143 [gtkmm_cv_cxx_has_template_sequence_ctors="no"]
147 if test "x${gtkmm_cv_cxx_has_template_sequence_ctors}" = "xyes"; then
149 AC_DEFINE([GLIBMM_HAVE_TEMPLATE_SEQUENCE_CTORS],[1], [Defined if the STL containers have templated sequence ctors])
154 ## GLIBMM_CXX_ALLOWS_STATIC_INLINE_NPOS()
156 ## Check whether the a static member variable may be initialized inline to std::string::npos.
157 ## The MipsPro (IRIX) compiler does not like this.
158 ## and #define GLIBMM_HAVE_ALLOWS_STATIC_INLINE_NPOS on success.
160 AC_DEFUN([GLIBMM_CXX_ALLOWS_STATIC_INLINE_NPOS],
162 AC_REQUIRE([GLIBMM_CXX_HAS_NAMESPACE_STD])
165 [whether the compiler allows a static member variable to be initialized inline to std::string::npos],
166 [gtkmm_cv_cxx_has_allows_static_inline_npos],
176 //The MipsPro compiler (IRIX) says "The indicated constant value is not known",
177 //so we need to initalize the static member data elsewhere.
178 static const std::string::size_type ustringnpos = std::string::npos;
181 std::cout << "npos=" << ustringtest::ustringnpos << std::endl;
183 [gtkmm_cv_cxx_has_allows_static_inline_npos="yes"],
184 [gtkmm_cv_cxx_has_allows_static_inline_npos="no"]
188 if test "x${gtkmm_cv_cxx_has_allows_static_inline_npos}" = "xyes"; then
190 AC_DEFINE([GLIBMM_HAVE_ALLOWS_STATIC_INLINE_NPOS],[1], [Defined if a static member variable may be initialized inline to std::string::npos])