E2093 - namespace (ADL) bug?



  • Hallo Leute!

    Kann es sein, dass der BCB6 (und bcc55) echt probleme mit ADL (=Argument Dependent Lookup) hat?

    namespace foo
    {
    class Outer
    {
    public:
        class Inner
        {
        public:
            friend bool operator==(Inner a, Inner b)
            {
                return true;
            }
        };
    };
    }
    
    int main()
    {
        foo::Outer::Inner a;
        foo::Outer::Inner b;
        a==b;
    }
    

    hier findet er den operator== fuer Outer::Inner nicht.
    wenn man aber den namespace weglaesst, oder den operator qualifiziert (foo::operator==(a,b)), dann findet er ihn schon. (ADL haut also nicht hin)

    wenn ich operator== als friend mache - nimmt er es auch nicht (was irgendwie logisch ist)

    er nimmt es nur, wenn operator== member ist (dann passt das ADL wieder)

    namespace foo
    {
    
    class Outer
    {
    public:
        class Inner
        {
        public:
            bool operator==(Outer::Inner b)
            {
                return true;
            }
        };
    };
    
    }
    
    int main()
    {
        foo::Outer::Inner a;
        foo::Outer::Inner b;
        a==b;
    }
    

    bin ich blind und uebersehe etwas wichtiges, oder ist das wirklich n bug?
    ist n bisschen ein gravierender bug, wie ich finde.



  • Hi,

    habs sowohl mit dem BCB5E als auch mit dem MVC++6 ohne Probleme getestet.

    epidemic



  • epidemic schrieb:

    habs sowohl mit dem BCB5E als auch mit dem MVC++6 ohne Probleme getestet.

    interessant. kann du mir mal die compiler version posten?
    also das was bei der command line erscheint, wenn man kompiliert.

    ich habe
    Borland C++ 5.5.1 for Win32 (freeware version)
    und
    Borland C++ 5.6 for Win32 (evaluation version vom bcb6)

    der 5.6er hat keine service packs und beim 5.5.1er bin ich mir nicht sicher, ich glaube aber, dass ich beide frei erhaeltlichen update habe.

    meine 2. version funktioniert - hast du es wirklich mit der 1. getestet?
    bin etwas verwirrt... weil es bei mir nicht will.



  • das 1. tut nicht da hast du recht ..
    edit : Version 6.0 Enterprise



  • Nein , habs nur mit der 2 Version getestet.
    Die erste funzt tatsächlich nicht.
    Weder mit BCB noch mit MVC

    epidemic



  • epidemic schrieb:

    Weder mit BCB noch mit MVC

    VC++6 auch nicht!

    danke! 👍 das muss ich uebersehen haben.


Anmelden zum Antworten