Ho qui un piccolo pezzo di codice per la tua considerazione che mi lascia un po 'imbarazzato. La cosa strana è che si compila sia su Sun Studio che su GCC anche se penso che non dovrebbe.Le funzioni con argomenti di classe sono trapelate da uno spazio dei nomi?
Considerate questo:
namespace name
{
class C
{
int a;
};
void f(C c);
void g(int a);
}
int main(int argc, char** argv)
{
name::C c;
name::f(c);
f(c); // <--- this compiles, strangely enough
name::g(42);
// g(42); <--- this does not, as I expected
}
L'argomento di classe dallo stesso namespace provoca la funzione f
a 'fuga' fuori dello spazio dei nomi ed essere accessibili senza name::
.
Qualcuno ha una spiegazione per questo? Sono certamente io e non il compilatore a sbagliare qui.
Interessante, BTW compilatore intel (ICPC) compila questo pure ... – Artyom
modificato la mia domanda proprio al fine di rimuovere i bit irrilevanti e rendere più facile da trovare per gli altri con lo stesso problema. – lytenyn