den folgenden Code vor:Umgebung Zugriffsbezeichner mit C++ 0x decltype
class A
{
private:
class B {};
public:
B f();
};
A a;
A::B g()
{
return a.f();
}
Der Compiler dies ablehnt - g kann ein :: B nicht zurück, weil A :: B privat ist.
Aber ich nehme jetzt decltype verwenden den Rückgabewert von g zu spezifizieren:
class A
{
private:
class B {};
public:
B f();
};
A a;
decltype(a.f()) g()
{
return a.f();
}
Urplötzlich es fein kompiliert (mit g ++> = 4.4).
Also habe ich declltype verwendet, um einen Access Specifier zu umgehen, wie ich es in C++ 98 nicht geschafft hätte.
Ist das beabsichtigt? Ist das eine gute Praxis?
bezogen: [delegiert in private Teile] (http://stackoverflow.com/questions/2952216/) – fredoverflow