Removing Member Function Templates from locale 8-Mar-95 ---------------------------------------------- ANSI/95-0077 ISO/0677 Latest results from the extensions WG are that the "ideal" syntax for explicit qualification of member template functions is not implementable. For example, given: struct A { template void f(); }; the syntax A a; a.f(); cannot be integrated into the language grammar. Rather, the following is required, under the status quo: A a; a.template f(); which while possible to use in odd corners of a library implementation, is not appropriate for the a public class interface. Therefore, I propose to remove the locale member function templates locale::use<>() and locale::has<>() and replace them with function templates as follows: namespace std { template Facet const& use_facet(locale const&); template bool has_facet(locale const&); } Given a locale named loc and a facet type named Fac, these are called as use_facet(loc).member(); // was: loc.template use().member() if (has_facet(loc)) // was: if (loc.template has()) I am not proposing changes to the constructor templates in locale.