From: Mark Mitchell Date: Mon, 19 Feb 2001 21:47:08 +0000 (+0000) Subject: decl2.c (set_decl_namespace): Allow explicit instantiations in any namespace. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=2c0fc02de295b3d3eebdf0ff6120de5cab010435;p=gcc.git decl2.c (set_decl_namespace): Allow explicit instantiations in any namespace. * decl2.c (set_decl_namespace): Allow explicit instantiations in any namespace. From-SVN: r39907 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index cf3d059f82f..45c61d1e269 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2001-02-19 Mark Mitchell + + * decl2.c (set_decl_namespace): Allow explicit instantiations in + any namespace. + 2001-02-18 Kriang Lerdsuwanakij * optimize.c (expand_call_inline): Don't walk subtrees of type diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index 51b734fb125..b371611e8ff 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -4536,6 +4536,9 @@ set_decl_namespace (decl, scope, friendp) if (!old) /* No old declaration at all. */ goto complain; + /* A template can be explicitly specialized in any namespace. */ + if (processing_explicit_instantiation) + return; if (!is_overloaded_fn (decl)) /* Don't compare non-function decls with decls_match here, since it can't check for the correct constness at this diff --git a/gcc/testsuite/g++.old-deja/g++.ns/template15.C b/gcc/testsuite/g++.old-deja/g++.ns/template15.C new file mode 100644 index 00000000000..ac781305642 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.ns/template15.C @@ -0,0 +1,5 @@ +// Build don't link: +// Origin: Mark Mitchell + +namespace X { template void f () {} } +template void X::f ();