mirror of git://gcc.gnu.org/git/gcc.git
* name-lookup.c (parse_using_directive): Deprecate strong using.
From-SVN: r244936
This commit is contained in:
parent
effdaefed3
commit
5668970a07
|
|
@ -1,5 +1,7 @@
|
||||||
2017-01-26 Jason Merrill <jason@redhat.com>
|
2017-01-26 Jason Merrill <jason@redhat.com>
|
||||||
|
|
||||||
|
* name-lookup.c (parse_using_directive): Deprecate strong using.
|
||||||
|
|
||||||
PR c++/79176 - lambda ICE with -flto -Os
|
PR c++/79176 - lambda ICE with -flto -Os
|
||||||
* decl2.c (vague_linkage_p): Handle decloned 'tors.
|
* decl2.c (vague_linkage_p): Handle decloned 'tors.
|
||||||
* tree.c (decl_linkage): Likewise.
|
* tree.c (decl_linkage): Likewise.
|
||||||
|
|
|
||||||
|
|
@ -4125,6 +4125,8 @@ parse_using_directive (tree name_space, tree attribs)
|
||||||
tree name = get_attribute_name (a);
|
tree name = get_attribute_name (a);
|
||||||
if (is_attribute_p ("strong", name))
|
if (is_attribute_p ("strong", name))
|
||||||
{
|
{
|
||||||
|
warning (OPT_Wdeprecated, "strong using is deprecated; use inline "
|
||||||
|
"namespaces instead");
|
||||||
if (!toplevel_bindings_p ())
|
if (!toplevel_bindings_p ())
|
||||||
error ("strong using only meaningful at namespace scope");
|
error ("strong using only meaningful at namespace scope");
|
||||||
else if (name_space != error_mark_node)
|
else if (name_space != error_mark_node)
|
||||||
|
|
|
||||||
|
|
@ -21802,7 +21802,6 @@ Predefined Macros,cpp,The GNU C Preprocessor}).
|
||||||
method denoted by a @samp{->*} or @samp{.*} expression.
|
method denoted by a @samp{->*} or @samp{.*} expression.
|
||||||
* C++ Attributes:: Variable, function, and type attributes for C++ only.
|
* C++ Attributes:: Variable, function, and type attributes for C++ only.
|
||||||
* Function Multiversioning:: Declaring multiple function versions.
|
* Function Multiversioning:: Declaring multiple function versions.
|
||||||
* Namespace Association:: Strong using-directives for namespace association.
|
|
||||||
* Type Traits:: Compiler support for type traits.
|
* Type Traits:: Compiler support for type traits.
|
||||||
* C++ Concepts:: Improved support for generic programming.
|
* C++ Concepts:: Improved support for generic programming.
|
||||||
* Deprecated Features:: Things will disappear from G++.
|
* Deprecated Features:: Things will disappear from G++.
|
||||||
|
|
@ -22368,8 +22367,6 @@ does not have constructors or destructors.
|
||||||
|
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
See also @ref{Namespace Association}.
|
|
||||||
|
|
||||||
@node Function Multiversioning
|
@node Function Multiversioning
|
||||||
@section Function Multiversioning
|
@section Function Multiversioning
|
||||||
@cindex function versions
|
@cindex function versions
|
||||||
|
|
@ -22428,51 +22425,6 @@ dispatching to call the right version at runtime. Refer to the
|
||||||
@uref{http://gcc.gnu.org/wiki/FunctionMultiVersioning, GCC wiki on
|
@uref{http://gcc.gnu.org/wiki/FunctionMultiVersioning, GCC wiki on
|
||||||
Function Multiversioning} for more details.
|
Function Multiversioning} for more details.
|
||||||
|
|
||||||
@node Namespace Association
|
|
||||||
@section Namespace Association
|
|
||||||
|
|
||||||
@strong{Caution:} The semantics of this extension are equivalent
|
|
||||||
to C++ 2011 inline namespaces. Users should use inline namespaces
|
|
||||||
instead as this extension will be removed in future versions of G++.
|
|
||||||
|
|
||||||
A using-directive with @code{__attribute ((strong))} is stronger
|
|
||||||
than a normal using-directive in two ways:
|
|
||||||
|
|
||||||
@itemize @bullet
|
|
||||||
@item
|
|
||||||
Templates from the used namespace can be specialized and explicitly
|
|
||||||
instantiated as though they were members of the using namespace.
|
|
||||||
|
|
||||||
@item
|
|
||||||
The using namespace is considered an associated namespace of all
|
|
||||||
templates in the used namespace for purposes of argument-dependent
|
|
||||||
name lookup.
|
|
||||||
@end itemize
|
|
||||||
|
|
||||||
The used namespace must be nested within the using namespace so that
|
|
||||||
normal unqualified lookup works properly.
|
|
||||||
|
|
||||||
This is useful for composing a namespace transparently from
|
|
||||||
implementation namespaces. For example:
|
|
||||||
|
|
||||||
@smallexample
|
|
||||||
namespace std @{
|
|
||||||
namespace debug @{
|
|
||||||
template <class T> struct A @{ @};
|
|
||||||
@}
|
|
||||||
using namespace debug __attribute ((__strong__));
|
|
||||||
template <> struct A<int> @{ @}; // @r{OK to specialize}
|
|
||||||
|
|
||||||
template <class T> void f (A<T>);
|
|
||||||
@}
|
|
||||||
|
|
||||||
int main()
|
|
||||||
@{
|
|
||||||
f (std::A<float>()); // @r{lookup finds} std::f
|
|
||||||
f (std::A<int>());
|
|
||||||
@}
|
|
||||||
@end smallexample
|
|
||||||
|
|
||||||
@node Type Traits
|
@node Type Traits
|
||||||
@section Type Traits
|
@section Type Traits
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
// PR c++/16301
|
|
||||||
|
|
||||||
// { dg-do compile }
|
|
||||||
|
|
||||||
namespace NS2
|
|
||||||
{
|
|
||||||
using namespace NS1 __attribute__ ((strong)); // { dg-error "" }
|
|
||||||
}
|
|
||||||
|
|
@ -250,7 +250,6 @@ namespace std
|
||||||
};
|
};
|
||||||
} // namespace __cxx1998
|
} // namespace __cxx1998
|
||||||
|
|
||||||
// namespace __debug __attribute__ ((strong));
|
|
||||||
inline namespace __debug { }
|
inline namespace __debug { }
|
||||||
}
|
}
|
||||||
</pre></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="methods.coexistence.link"></a>Link- and run-time coexistence of release- and
|
</pre></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="methods.coexistence.link"></a>Link- and run-time coexistence of release- and
|
||||||
|
|
|
||||||
|
|
@ -656,7 +656,6 @@ namespace std
|
||||||
};
|
};
|
||||||
} // namespace __cxx1998
|
} // namespace __cxx1998
|
||||||
|
|
||||||
// namespace __debug __attribute__ ((strong));
|
|
||||||
inline namespace __debug { }
|
inline namespace __debug { }
|
||||||
}
|
}
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue