AC-Archive
Autoconf Macro Archive

ac-archive.sf.net: - Project CVS - Download
Macro Index
- AM Support
- C++ Support
- C Support
- Fortran Support
- Java Support
- Cross Compilation
- Installed Packages
- Miscellaneous
- LaTeX Support
- Uncategorized
- archive macros
- adl's macros
- bkorb's macros
- guidod's macros
- latex's macros
- other's macros
- rleigh's macros
- obsoleted macros
- released macros
- search index

Documentation
- Contribute!
- History
- acincludedir m4
- acinclude (tool)
- macro howto
- ax tricks
- maintainers
- License
- Topics

generated...
2007-08-05

(C) 2007 guidod
Download the M4 Source.

ac_cxx_template_qualified_base_class

Back to the Main Page.

Synopsis
AC_CXX_TEMPLATE_QUALIFIED_BASE_CLASS
, 
, 
Version

2005-06-17

Author

Todd Veldhuizen Luc Maisonobe <luc@spaceroots.org>

License

AllPermissive
Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. Users of this software should generally follow the principles of the MIT License includings its disclaimer.

Category

cryp.to ac-archive's C++ Support (released)

Documentation

If the compiler supports template-qualified base class specifiers, define HAVE_TEMPLATE_QUALIFIED_BASE_CLASS.

M4 Source Code
AC_DEFUN([AC_CXX_TEMPLATE_QUALIFIED_BASE_CLASS],
[AC_CACHE_CHECK(whether the compiler supports template-qualified base class specifiers,
ac_cv_cxx_template_qualified_base_class,
[AC_REQUIRE([AC_CXX_TYPENAME])
 AC_REQUIRE([AC_CXX_FULL_SPECIALIZATION_SYNTAX])
 AC_LANG_SAVE
 AC_LANG_CPLUSPLUS
 AC_TRY_COMPILE([
#ifndef HAVE_TYPENAME
 #define typename
#endif
class Base1 { public : int f () const { return 1; } };
class Base2 { public : int f () const { return 0; } };
template&lt;class X&gt; struct base_trait        { typedef Base1 base; };
#ifdef HAVE_FULL_SPECIALIZATION_SYNTAX
template&lt;&gt;        struct base_trait&lt;float&gt; { typedef Base2 base; };
#else
                  struct base_trait&lt;float&gt; { typedef Base2 base; };
#endif
template&lt;class T&gt; class Weird : public base_trait&lt;T&gt;::base
{ public :
  typedef typename base_trait&lt;T&gt;::base base;
  int g () const { return base::f (); }
};],[ Weird&lt;float&gt; z; return z.g ();],
 ac_cv_cxx_template_qualified_base_class=yes, ac_cv_cxx_template_qualified_base_class=no)
 AC_LANG_RESTORE
])
if test "$ac_cv_cxx_template_qualified_base_class" = yes; then
  AC_DEFINE(HAVE_TEMPLATE_QUALIFIED_BASE_CLASS,,
            [define if the compiler supports template-qualified base class specifiers])
fi
])