diff --git a/mozilla/configure.in b/mozilla/configure.in index d1286c65ac8..1cb54c39f8b 100644 --- a/mozilla/configure.in +++ b/mozilla/configure.in @@ -2645,14 +2645,27 @@ fi dnl Some compilers have trouble resolving the ambiguity between two dnl functions whose arguments differ only by cv-qualifications. -AC_CACHE_CHECK(whether the compiler cannot resolve const ambiguities correctly, - ac_cv_cant_resolve_const_ambiguity, - [AC_TRY_COMPILE([int a(int *i) { return *i; } - const int a(const int *i) { return *i; } ], - [ int i; a(&i); ], - ac_cv_cant_resolve_const_ambiguity=no, - ac_cv_cant_resolve_const_ambiguity=yes)]) -if test "$ac_cv_cant_resolve_const_ambiguity" = yes ; then +AC_CACHE_CHECK(whether the compiler can resolve const ambiguities for templates, + ac_cv_can_resolve_const_ambiguity, + [AC_TRY_COMPILE([ + template class ptrClass { + public: T* ptr; + }; + + template T* a(ptrClass *arg) { + return arg->ptr; + } + + template + const T* a(const ptrClass *arg) { + return arg->ptr; + } + ], + [ ptrClass i; + a(&i); ], + ac_cv_can_resolve_const_ambiguity=yes, + ac_cv_can_resolve_const_ambiguity=no)]) +if test "$ac_cv_can_resolve_const_ambiguity" = no ; then AC_DEFINE(CANT_RESOLVE_CPP_CONST_AMBIGUITY) fi