cv_cxx_has_namespace_std ## GLIBMM_CXX_HAS_NAMESPACE_STD() ## ## Test whether libstdc++ declares namespace std. For safety, ## also check whether several randomly selected STL symbols ## are available in namespace std. ## ## On success, #define GLIBMM_HAVE_NAMESPACE_STD to 1. ## AC_DEFUN([GLIBMM_CXX_HAS_NAMESPACE_STD], [ AC_CACHE_CHECK( [whether C++ library symbols are declared in namespace std], [gtkmm_cv_cxx_has_namespace_std], [ AC_TRY_COMPILE( [ #include #include #include #include ],[ using std::min; using std::find; using std::copy; using std::bidirectional_iterator_tag; using std::string; using std::istream; using std::cout; ], [gtkmm_cv_cxx_has_namespace_std="yes"], [gtkmm_cv_cxx_has_namespace_std="no"] ) ]) if test "x${gtkmm_cv_cxx_has_namespace_std}" = "xyes"; then { AC_DEFINE([GLIBMM_HAVE_NAMESPACE_STD],[1], [Defined when the libstdc++ declares the std-namespace]) } fi ]) ## GLIBMM_CXX_HAS_STD_ITERATOR_TRAITS() ## ## Check for standard-conform std::iterator_traits<>, and ## #define GLIBMM_HAVE_STD_ITERATOR_TRAITS on success. ## AC_DEFUN([GLIBMM_CXX_HAS_STD_ITERATOR_TRAITS], [ AC_REQUIRE([GLIBMM_CXX_HAS_NAMESPACE_STD]) AC_CACHE_CHECK( [whether the C++ library supports std::iterator_traits], [gtkmm_cv_cxx_has_std_iterator_traits], [ AC_TRY_COMPILE( [ #include #ifdef GLIBMM_HAVE_NAMESPACE_STD using namespace std; #endif ],[ typedef iterator_traits::value_type ValueType; ], [gtkmm_cv_cxx_has_std_iterator_traits="yes"], [gtkmm_cv_cxx_has_std_iterator_traits="no"] ) ]) if test "x${gtkmm_cv_cxx_has_std_iterator_traits}" = "xyes"; then { AC_DEFINE([GLIBMM_HAVE_STD_ITERATOR_TRAITS],[1], [Defined if std::iterator_traits<> is standard-conforming]) } fi ]) ## GLIBMM_CXX_HAS_SUN_REVERSE_ITERATOR() ## ## Check for Sun libCstd style std::reverse_iterator, ## and #define GLIBMM_HAVE_SUN_REVERSE_ITERATOR if found. ## AC_DEFUN([GLIBMM_CXX_HAS_SUN_REVERSE_ITERATOR], [ AC_REQUIRE([GLIBMM_CXX_HAS_NAMESPACE_STD]) AC_CACHE_CHECK( [for non-standard Sun libCstd reverse_iterator], [gtkmm_cv_cxx_has_sun_reverse_iterator], [ AC_TRY_COMPILE( [ #include #ifdef GLIBMM_HAVE_NAMESPACE_STD using namespace std; #endif ],[ typedef reverse_iterator ReverseIter; ], [gtkmm_cv_cxx_has_sun_reverse_iterator="yes"], [gtkmm_cv_cxx_has_sun_reverse_iterator="no"] ) ]) if test "x${gtkmm_cv_cxx_has_sun_reverse_iterator}" = "xyes"; then { AC_DEFINE([GLIBMM_HAVE_SUN_REVERSE_ITERATOR],[1], [Defined if std::reverse_iterator is in Sun libCstd style]) } fi ]) ## GLIBMM_CXX_HAS_TEMPLATE_SEQUENCE_CTORS() ## ## Check whether the STL containers have templated sequence ctors, ## and #define GLIBMM_HAVE_TEMPLATE_SEQUENCE_CTORS on success. ## AC_DEFUN([GLIBMM_CXX_HAS_TEMPLATE_SEQUENCE_CTORS], [ AC_REQUIRE([GLIBMM_CXX_HAS_NAMESPACE_STD]) AC_CACHE_CHECK( [whether STL containers have templated sequence constructors], [gtkmm_cv_cxx_has_template_sequence_ctors], [ AC_TRY_COMPILE( [ #include #include #include #ifdef GLIBMM_HAVE_NAMESPACE_STD using namespace std; #endif ],[ const int array[8] = { 0, }; vector test_vector (&array[0], &array[8]); deque test_deque (test_vector.begin(), test_vector.end()); list test_list (test_deque.begin(), test_deque.end()); test_vector.assign(test_list.begin(), test_list.end()); ], [gtkmm_cv_cxx_has_template_sequence_ctors="yes"], [gtkmm_cv_cxx_has_template_sequence_ctors="no"] ) ]) if test "x${gtkmm_cv_cxx_has_template_sequence_ctors}" = "xyes"; then { AC_DEFINE([GLIBMM_HAVE_TEMPLATE_SEQUENCE_CTORS],[1], [Defined if the STL containers have templated sequence ctors]) } fi ]) ## GLIBMM_CXX_ALLOWS_STATIC_INLINE_NPOS() ## ## Check whether the a static member variable may be initialized inline to std::string::npos. ## The MipsPro (IRIX) compiler does not like this. ## and #define GLIBMM_HAVE_ALLOWS_STATIC_INLINE_NPOS on success. ## AC_DEFUN([GLIBMM_CXX_ALLOWS_STATIC_INLINE_NPOS], [ AC_REQUIRE([GLIBMM_CXX_HAS_NAMESPACE_STD]) AC_CACHE_CHECK( [whether the compiler allows a static member variable to be initialized inline to std::string::npos], [gtkmm_cv_cxx_has_allows_static_inline_npos], [ AC_TRY_COMPILE( [ #include #include class ustringtest { public: //The MipsPro compiler (IRIX) says "The indicated constant value is not known", //so we need to initalize the static member data elsewhere. static const std::string::size_type ustringnpos = std::string::npos; }; ],[ std::cout << "npos=" << ustringtest::ustringnpos << std::endl; ], [gtkmm_cv_cxx_has_allows_static_inline_npos="yes"], [gtkmm_cv_cxx_has_allows_static_inline_npos="no"] ) ]) if test "x${gtkmm_cv_cxx_has_allows_static_inline_npos}" = "xyes"; then { AC_DEFINE([GLIBMM_HAVE_ALLOWS_STATIC_INLINE_NPOS],[1], [Defined if a static member variable may be initialized inline to std::string::npos]) } fi ])