From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22597 invoked by alias); 24 Jul 2002 20:06:01 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 22577 invoked by uid 71); 24 Jul 2002 20:06:00 -0000 Resent-Date: 24 Jul 2002 20:06:00 -0000 Resent-Message-ID: <20020724200600.22575.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-To: nobody@gcc.gnu.org Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, hkb@eastcoastpaper.com Received: (qmail 16937 invoked by uid 61); 24 Jul 2002 19:59:33 -0000 Message-Id: <20020724195933.16936.qmail@sources.redhat.com> Date: Wed, 24 Jul 2002 13:06:00 -0000 From: hkb@eastcoastpaper.com Reply-To: hkb@eastcoastpaper.com To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: c++/7398: An ambiguity error is flagged during cast with proper perfect single match. X-SW-Source: 2002-07/txt/msg00661.txt.bz2 List-Id: >Number: 7398 >Category: c++ >Synopsis: An ambiguity error is flagged during cast with proper perfect single match. >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: rejects-legal >Submitter-Id: net >Arrival-Date: Wed Jul 24 13:06:00 PDT 2002 >Closed-Date: >Last-Modified: >Originator: Harold K. Brown @ East Coast Paper Stock, Inc. >Release: g++ 2.95.4 >Organization: >Environment: Debian woody on Pentium III >Description: When B y; (A)y; is invoked B:operator A() does not get selected over that of the non-matching constructors in A. >How-To-Repeat: compile source code with default sttings. g++ casting_bug.cpp Note that the file has no #'s, include files, or macros. >Fix: Must do the cast in the form A x; B y; (A)y; // does not work in this case static_cast(y); // does not work in this case y.operator A(); // does work in all tested cases // in this context >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: text/x-c++src; name="casting_bug.cpp" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="casting_bug.cpp" LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgogICAgICAgICAgICAgICAgICAgICAgICAgIGNhc3RpbmdfYnVn LmNwcCAgLSAgZGVzY3JpcHRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLS0tLS0t LS0tLS0tLS0tLS0tCiAgICBiZWdpbiAgICAgICAgICAgICAgICA6IEp1bCAyNCwgMjAwMgogICAg Y29weXJpZ2h0ICAgICAgICAgICAgOiAoQykgMjAwMiBieSBIYXJvbGQgSy4gQnJvd24KICAgIGVt YWlsICAgICAgICAgICAgICAgIDogaGJyb3duX3VzYUB5YWhvby5jb20KICoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKICogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogKiAgIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5ICAqCiAqICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgICoKICogICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAgICAgKgogKiAgIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAqCiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCi8v IFRleHQgaW5sY3VkZWQgdW5kZXIgZmFpciB1c2UgdGhhdCBhcmUgY29weSByaWdodGVkIGJ5IG90 aGVycyBpcyBub3QKLy8gY292ZXJlZCBieSB0aGUgR05VIHRlcm1zIGFuZCBjb25kaXRpb25zLgoK Ci8vIFRoaXMgaXMgYW4gZXhhbXBsZSBvZiBhIHBvdGVudGlhbCBnY2MgYnVnCgoKLy8gRmFjdHM6 Ci8vICAgICAgICAgKDEpIFRoZSBjb2RlIGJlbG93IGdpdmUgYW4gZXJyb3IgYXQgY29tcGlsZSB0 aW1lIHdoZW4gdXNpbmcgZysrIHZlcnNpb24gMi45NS40LgovLyAgICAgICAgICgyKSBQcm9ibGVt IHdhcyBmb3VuZCB3aGVuIHBvcnRpbmcgd29ya2luZyBjb2RlIHVzaW5nIHRoZSBzYW1lCi8vICAg ICAgICAgICAgIGNvbnN0cnVjdHMgZnJvbSBtcyBWQyA2LjAgY29kZSB0aGF0IEkgd3JvdGUuCi8v ICAgICAgICAgKDMpIFRoaXMgcGFydGljdWxhciB0ZXN0IGNvZGUgaGFzIG5vdCBiZWVuIHJlY29t cGlsZWQgb24gVkMgNi4wLgovLyAgICAgICAgICg0KSBXaGVuIEIgeTsgKEEpeTsgaW52b2tlcyB0 aGUgZXJyb3IgaXQgaXMgb2YgdGhlIGZvcm06Ci8vICAgICAgICAgICAgICAgbWFpbi5jcHA6NzM6 IGNhbGwgb2Ygb3ZlcmxvYWRlZCBgQShCICYpJyBpcyBhbWJpZ3VvdXMKLy8gICAgICAgICAgICAg ICBtYWluLmNwcDozNzogY2FuZGlkYXRlcyBhcmU6IEE6OkEoaW50KQovLyAgICAgICAgICAgICAg IG1haW4uY3BwOjM4OiAgICAgICAgICAgICAgICAgQTo6QShzaG9ydCBpbnQpCi8vICAgICAgICAg ICAgICAgbWFpbi5jcHA6Mzk6ICAgICAgICAgICAgICAgICBBOjpBKGNvbnN0IEEgJikKLy8gICAg ICAgICAgICAgICBtYWluLmNwcDo0MDogICAgICAgICAgICAgICAgIEE6OkEoQSAmKSA8bmVhciBt YXRjaD4KLy8gICAgICAgICAgKDUpIFRoZXJlIGlzIGEgdmFsaWQgQjo6b3BlcmF0aW9yIEEoKSBk ZWZpbml0aW9uLgovLyAgICAgICAgICAoNikgSWYgdGhlIEEoLi4uKSBjb25zdHVjdG9ycyBhcmUg cmVtb3ZlZCB0aGVuIGl0IHdpbGwgY29tcGlsZS4KCgovLyBTcGVjdWxhdGlvbjoKLy8gICAgICAg ICAoMSkgTm90IHN1cmUgaWYgdGhpcyBpcyBhbiBlcnJvciBvciBhIGZlYXR1cmUsIGJ1dCBsb29r cyBsaWtlIGVycm9yLgovLyAgICAgICAgICgyKSBJIHdvdWxkIHRoaW5rIHRoYXQgZHVyaW5nIGEg Y2FzdCBmcm9tIEIgdG8gQSB0aGF0Ci8vICAgICAgICAgICAgIEI6Om9wZXJhdGlvciBBKCkgc2hv dWxkIGJlIHNlbGVjdGVkIG92ZXIgYW55IG9mIHRoZSBBKC4uLikKLy8gICAgICAgICAgICAgY29u c3RydWN0b3IgZGVmaW5pdGlvbnMuCi8vICAgICAgICAgKDMpIE5vdGUgdGhhdCBmb3IgQSB4OyBC IHk7IGZvbGxvd2VkIGJ5IGlmKHg9PXkpLi4uIHRoZSBjYXN0IGRvZXMKLy8gICAgICAgICAgICAg d29yayBpbiBhIG1hbm5lciB0aGF0IHdvdWxkIGJlIGNvbnNpZGVyZWQgY29ycmVjdCBieSBtZS4g IEluIHRoaXMKLy8gICAgICAgICAgICAgY2FzZSB4Lm9wZXJhdG9yID09KHkub3BlcmF0b3IgQSgp KSBzZWVtcyB0byBiZSBpbnZva2VkLgovLyAgICAgICAgICg0KSBBY2NvZGluZyB0byB0aGUgQysr IHN0YW5kYXJkIChzZWUgcmVmIGJlbG93KSB0aGUgQjo6b3BlcmF0aW9yIEEoKQovLyAgICAgICAg ICAgICBzaG91bGQgYmUgc2VsZWN0ZWQgc2luY2UgaXQgaXMgYSBwZXJmZWN0IG1hdGNoLgovLwoK aW50IFRyYWNrZXIgPSAwOyAgLy8gVG8gdG8gdHJhY2sgdGhyZWFkIHdpdGhpbiBhIGRlYnVnZ2Vy LiAgVGhpcyBpcyB3aGVyZSBJIHdvdWxkIHBsYWNlIGNvdXQgc3RhdGVtZW50cy4KCmNsYXNzIEI7 CmNsYXNzIEEKeyBwdWJsaWM6CiAgICBpbnQgaTsKICAgIEEoKXsgaSA9MDt9CiAgICB+QSgpe30K CiAgICBBKGNvbnN0IGludCAgIFNyYyl7IGkgPSBTcmM7fQkvLyBJZiB0aGVzZSA0IGNvbnN0dWN0 b3JzIGFyZSByZW1vdmVkIHRoZW4gaXQgd29ya3MKICAgIEEoY29uc3Qgc2hvcnQgU3JjKXsgaSA9 IFNyYzt9CiAgICBBKGNvbnN0IEEmICAgIFNyYyl7KnRoaXM9U3JjO30KICAgIEEoICAgICAgQSYg ICAgU3JjKXsqdGhpcz1TcmM7fQoKICAgIEEmIG9wZXJhdG9yID0oY29uc3QgQSYgU3JjKSB7aT1T cmMuaTsgcmV0dXJuICp0aGlzO30KICAgIHZvaWQgSWQoKXsgVHJhY2tlciA9IDEwMDt9CiAgICBi b29sIG9wZXJhdG9yPT0oY29uc3QgQSYgclNyYyljb25zdCB7cmV0dXJuIGk9PXJTcmMuaT90cnVl OmZhbHNlO30KfTsKCmNsYXNzIEIKeyBwdWJsaWM6CiAgICBpbnQgaTsKICAgIEIoKXsgaSA9MDt9 CiAgICB+Qigpe30KICAgIEIoY29uc3QgaW50IFNyYyl7IGkgPSBTcmM7fTsJLy8gUmVtb3Zpbmcg dGhlc2UgdHdvIGRvIG5vdCBoZWxwCiAgICBCKGNvbnN0IHNob3J0IFNyYyl7IGkgPSBTcmM7fQog ICAgQihjb25zdCBCJiBTcmMpeyp0aGlzPVNyYzt9CiAgICBCJiBvcGVyYXRvciA9KGNvbnN0IEIm IFNyYyl7aT1TcmMuaTsgcmV0dXJuICp0aGlzO30KICAgIG9wZXJhdG9yIEEoKWNvbnN0eyAgVHJh Y2tlciA9IDIwMDsgQSB0OyB0LmkgPSAxOyByZXR1cm4gdDt9CiAgICBvcGVyYXRvciBpbnQoKXsg IHJldHVybiBpO30KICAgIG9wZXJhdG9yIHNob3J0KCl7ICByZXR1cm4gaTt9Cn07CgppbnQgbWFp bigpCnsgQSB4OyB4Lmk9MTsKICBCIHkoMik7CgogIC8vIEkgZm91bmQgdGhpcyBwcm9ibGVtIHdo ZW4gSSBwb3J0ZWQgY29kZSBmcm9tIG1zdjYgdG8gZ2NjIHZlcnNpb24gMi45NS40CiAgLy8gdXNp bmcga2RldmVsb3AuCiAgLy8gTm90ZSB0aGF0IHkub3BlcmF0b3IgQSgpIGlzIGludm9rZWRzIGFz IGl0IHNob3VsZCBiZS4gIEJ1dCBub3RlIHRoYXQKICAvLyAoQSl5IGRvZXMgbm90IHNlZW0gdG8g aW52b2RlIHkub3BlcmF0b3IgQSgpIHRvIGFuIHVzZWZ1bCBkZWdyZWUgKGkuZS4gbmVhciBtYXRj aCkKICBpZih4ID09IHkpICAgICAgICAgICAgICAvLyBEb2VzIHdvcmsgYW5kIGRvZXMgY2FsbCBC OjpvcGVyYXRvciBBKCkgLyBUcmFja2VyIDIwMAogIHsgVHJhY2tlcj0zMDA7CiAgfQogIGVsc2UK ICB7IFRyYWNrZXIgPSA0MDA7CiAgfQoKCiAgKChBKXkpLklkKCk7ICAgICAgICAgICAgLy8gRG9l cyBub3Qgd29yayAoSXQgY29udGludWVzIHRvIHRyeSB0byBjYXN0IHRvIEEoQSYpIG9yIEEoaW50 KSBhbmQgc28gb24uCiAgeS5vcGVyYXRvciBBKCkuSWQoKTsgICAgLy8gRG9lcyB3b3JrCgogIGlm KHggPT0gKEEpeSkgICAgICAgICAvLyBEb2VzIG5vdCB3b3JrCiAgeyBUcmFja2VyID0gNTAwOwog IH0KCiAgaWYoeCA9PSBBKHkpKSAgICAgICAgIC8vIERvZXMgbm90IHdvcmsKICB7IFRyYWNrZXIg PSA1MDE7CiAgfQoKICBpZih4ID09IHN0YXRpY19jYXN0PEE+KHkpKSAgIC8vIERvZXMgbm90IHdv cmsKICB7IFRyYWNrZXIgPSA1MDI7CiAgfQoKICBpZigoKEEpeSkuaSkgICAvLyBEb2VzIG5vdCBX b3JrcwogIHsgVHJhY2tlciA9IDUwMzsKICB9CgogIGlmKHggPT0geS5vcGVyYXRvciBBKCkpICAg Ly8gV29ya3MgYWxsIHRoZSB0aW1lICh0aGUgd29yayBhcm91bmQpCiAgeyBUcmFja2VyID0gNjAw OwogIH0KICBlbHNlCiAgeyBUcmFja2VyID0gNjAxOwogIH0KfQoKLyoKCgovLyBUaGUgZm9sbGlu ZyBpcyBpbmNsdWRlZCBhY2NvcmRpbmcgdG8gZmFpciB1c2FnZSB1cyBjb2RlLgpUaGUgZm9sbG9p bmcgdGFrZW4gZnJvbSAtLS0+IGh0dHA6Ly9hbnViaXMuZGt1dWcuZGsvanRjMS9zYzIyL29wZW4v bjIzNTYvCgpDYW5kaWRhdGUgRnVuY3Rpb24gU2VsZWN0aW9uIFByb2Nlc3M6CjIgT3ZlcmxvYWQg cmVzb2x1dGlvbiBzZWxlY3RzIHRoZSBmdW5jdGlvbiB0byAgY2FsbCAgaW4gIHNldmVuICBkaXN0 aW5jdAogIGNvbnRleHRzIHdpdGhpbiB0aGUgbGFuZ3VhZ2U6CgogIC0taW52b2NhdGlvbiAgIG9m ICBhICBmdW5jdGlvbiAgbmFtZWQgIGluICB0aGUgIGZ1bmN0aW9uICBjYWxsICBzeW50YXgKICAg IChfb3Zlci5jYWxsLmZ1bmNfKTsKCiAgLS1pbnZvY2F0aW9uIG9mIGEgZnVuY3Rpb24gY2FsbCBv cGVyYXRvciwgYSAgcG9pbnRlci10by1mdW5jdGlvbiAgY29uLQogICAgdmVyc2lvbiAgIGZ1bmN0 aW9uLCAgYSAgcmVmZXJlbmNlLXRvLXBvaW50ZXItdG8tZnVuY3Rpb24gIGNvbnZlcnNpb24KICAg IGZ1bmN0aW9uLCBvciBhIHJlZmVyZW5jZS10by1mdW5jdGlvbiBjb252ZXJzaW9uIGZ1bmN0aW9u IG9uIGEgIGNsYXNzCiAgICBvYmplY3QgbmFtZWQgaW4gdGhlIGZ1bmN0aW9uIGNhbGwgc3ludGF4 IChfb3Zlci5jYWxsLm9iamVjdF8pOwoKICAtLWludm9jYXRpb24gICBvZiAgIHRoZSAgIG9wZXJh dG9yICAgcmVmZXJlbmNlZCAgIGluICAgYW4gICBleHByZXNzaW9uCiAgICAoX292ZXIubWF0Y2gu b3Blcl8pOwoKICAtLWludm9jYXRpb24gb2YgYSBjb25zdHJ1Y3RvciBmb3IgIGRpcmVjdC1pbml0 aWFsaXphdGlvbiAgKF9kY2wuaW5pdF8pCiAgICBvZiBhIGNsYXNzIG9iamVjdCAoX292ZXIubWF0 Y2guY3Rvcl8pOwoKICAtLWludm9jYXRpb24gIG9mICBhICB1c2VyLWRlZmluZWQgIGNvbnZlcnNp b24gIGZvciBjb3B5LWluaXRpYWxpemF0aW9uCiAgICAoX2RjbC5pbml0Xykgb2YgYSBjbGFzcyBv YmplY3QgKF9vdmVyLm1hdGNoLmNvcHlfKTsKCiAgLS1pbnZvY2F0aW9uIG9mIGEgY29udmVyc2lv biBmdW5jdGlvbiBmb3IgaW5pdGlhbGl6YXRpb24gb2YgYW4gIG9iamVjdAogICAgb2YgICBhICAg bm9uY2xhc3MgICB0eXBlICAgZnJvbSAgIGFuICAgZXhwcmVzc2lvbiAgIG9mICAgY2xhc3MgIHR5 cGUKICAgIChfb3Zlci5tYXRjaC5jb252Xyk7IGFuZAoKICAtLWludm9jYXRpb24gb2YgYSBjb252 ZXJzaW9uIGZ1bmN0aW9uIGZvciBpbml0aWFsaXphdGlvbiBvZiAgYSAgdGVtcG8tCiAgICByYXJ5 ICB0byAgd2hpY2ggIGEgcmVmZXJlbmNlIChfZGNsLmluaXQucmVmXykgd2lsbCBiZSBkaXJlY3Rs eSBib3VuZAogICAgKF9vdmVyLm1hdGNoLnJlZl8pLgoKCkZpbmFsIFNlbGVjdGlvbgoKCjMgRWFj aCBvZiB0aGVzZSBjb250ZXh0cyBkZWZpbmVzIHRoZSBzZXQgb2YgY2FuZGlkYXRlIGZ1bmN0aW9u cyBhbmQgIHRoZQogIGxpc3QgIG9mICBhcmd1bWVudHMgIGluICBpdHMgIG93biB1bmlxdWUgd2F5 LiAgQnV0LCBvbmNlIHRoZSBjYW5kaWRhdGUKICBmdW5jdGlvbnMgYW5kIGFyZ3VtZW50IGxpc3Rz IGhhdmUgYmVlbiBpZGVudGlmaWVkLCAgdGhlICBzZWxlY3Rpb24gIG9mCiAgdGhlIGJlc3QgZnVu Y3Rpb24gaXMgdGhlIHNhbWUgaW4gYWxsIGNhc2VzOgoKICAtLUZpcnN0LCAgYSAgc3Vic2V0ICBv ZiAgdGhlICBjYW5kaWRhdGUgZnVuY3Rpb25zLS10aG9zZSB0aGF0IGhhdmUgdGhlCiAgICBwcm9w ZXIgbnVtYmVyIG9mIGFyZ3VtZW50cyBhbmQgIG1lZXQgIGNlcnRhaW4gIG90aGVyICBjb25kaXRp b25zLS1pcwogICAgc2VsZWN0ZWQgdG8gZm9ybSBhIHNldCBvZiB2aWFibGUgZnVuY3Rpb25zIChf b3Zlci5tYXRjaC52aWFibGVfKS4KCiAgLS1UaGVuIHRoZSBiZXN0IHZpYWJsZSBmdW5jdGlvbiBp cyBzZWxlY3RlZCBiYXNlZCBvbiB0aGUgaW1wbGljaXQgY29uLQogICAgdmVyc2lvbiBzZXF1ZW5j ZXMgKF9vdmVyLmJlc3QuaWNzXykgbmVlZGVkIHRvIG1hdGNoIGVhY2ggYXJndW1lbnQgdG8KICAg IHRoZSBjb3JyZXNwb25kaW5nIHBhcmFtZXRlciBvZiBlYWNoIHZpYWJsZSBmdW5jdGlvbi4KCjQg SWYgIGEgIGJlc3QgIHZpYWJsZSBmdW5jdGlvbiBleGlzdHMgYW5kIGlzIHVuaXF1ZSwgb3Zlcmxv YWQgcmVzb2x1dGlvbgogIHN1Y2NlZWRzIGFuZCBwcm9kdWNlcyBpdCBhcyB0aGUgcmVzdWx0LiAg T3RoZXJ3aXNlIG92ZXJsb2FkIHJlc29sdXRpb24KICBmYWlscyBhbmQgdGhlIGludm9jYXRpb24g aXMgaWxsLWZvcm1lZC4gIFdoZW4gb3ZlcmxvYWQgcmVzb2x1dGlvbiBzdWMtCiAgY2VlZHMsIGFu ZCB0aGUgYmVzdCB2aWFibGUgZnVuY3Rpb24gaXMgbm90IGFjY2Vzc2libGUgKF9jbGFzcy5hY2Nl c3NfKQogIGluIHRoZSBjb250ZXh0IGluIHdoaWNoIGl0IGlzIHVzZWQsIHRoZSBwcm9ncmFtIGlz IGlsbC1mb3JtZWQuCgoKCiovCgoKLy8gRm9yIGVhY2ggb2YgdGhlIGNhc2VzIHRoYXQgZG8gbm90 IHdvcmsgZ2V0IHRoaXMgZ2VuZXJhbCBlcnJvci4gIExpbmUgbnVtcwovLyAgYXJlIGRpZmZlcmVu dC4KCi8vbWFpbi5jcHA6NzM6IGNhbGwgb2Ygb3ZlcmxvYWRlZCBgQShCICYpJyBpcyBhbWJpZ3Vv dXMKLy9tYWluLmNwcDozNzogY2FuZGlkYXRlcyBhcmU6IEE6OkEoaW50KQovL21haW4uY3BwOjM4 OiAgICAgICAgICAgICAgICAgQTo6QShzaG9ydCBpbnQpCi8vbWFpbi5jcHA6Mzk6ICAgICAgICAg ICAgICAgICBBOjpBKGNvbnN0IEEgJikKLy9tYWluLmNwcDo0MDogICAgICAgICAgICAgICAgIEE6 OkEoQSAmKSA8bmVhciBtYXRjaD4K