Next: Java Exceptions, Previous: C++ Attributes, Up: C++ Extensions
Caution: The semantics of this extension are not fully defined. Users should refrain from using this extension as its semantics may change subtly over time. It is possible that this extension wil be removed in future versions of G++.
A using-directive with __attribute ((strong))
is stronger
than a normal using-directive in two ways:
This is useful for composing a namespace transparently from implementation namespaces. For example:
namespace std { namespace debug { template <class T> struct A { }; } using namespace debug __attribute ((__strong__)); template <> struct A<int> { }; // ok to specialize template <class T> void f (A<T>); } int main() { f (std::A<float>()); // lookup finds std::f f (std::A<int>()); }