Ich frage mich nur, warum es so entworfen ist, dass eine Direktive verwendet wird. 1) Wird eine Struktur wie ein Namensraum behandelt und 2) wird sie nicht:
struct foo
{
using type0 = int;
};
namespace bar
{
using type1 = int;
}
using bar::type1;
using type0 = foo::type0; // 1)
using foo::type0; // 2)
clang Version 3.3 (Zweig/release_33 186829)
clang -std=c++11 test.cpp
test.cpp:13:12: Fehler: Die Verwendungserklärung kann nicht auf ein Klassenmember verweisen
using foo::type0;
\~^
gcc Version 4.8.1
c++ -std=c++11 test.cpp
test.cpp:13:12: Fehler: ‘foo’ ist kein Namensraum
using foo::type0;