You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@stdcxx.apache.org by "Martin Sebor (JIRA)" <ji...@apache.org> on 2007/11/09 00:40:50 UTC

[jira] Closed: (STDCXX-657) [HP aCC 3.39] confused taking the address of an overloaded member

     [ https://issues.apache.org/jira/browse/STDCXX-657?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Martin Sebor closed STDCXX-657.
-------------------------------

    Resolution: Fixed

The test case compiles with 3.73. Closing.

> [HP aCC 3.39] confused taking the address of an overloaded member
> -----------------------------------------------------------------
>
>                 Key: STDCXX-657
>                 URL: https://issues.apache.org/jira/browse/STDCXX-657
>             Project: C++ Standard Library
>          Issue Type: Bug
>          Components: External
>         Environment: HP aCC 3.25 - (at least) 3.39
>            Reporter: Martin Sebor
>
> Moved from Rogue Wave bug tracking database:
> ****Created By: sebor @ Dec 29, 2000 09:03:26 PM****
> Subject: aCC 3.25 confused taking the address of an overloaded member
> Date: Fri, 29 Dec 2000 21:03:09 -0700
> From: Martin Sebor <se...@roguewave.com>
> Organization: Rogue Wave Software, Inc.
> To: HP aCC mailing list <ac...@cup.hp.com>
> Here's another member template problem.
> Martin
> $ cat t.cpp
> template<class T>
> struct S
> {
>    void foo (S&) throw ();
>    template <class U>
>    void foo (S<U>&) throw ();
> };
> int main ()
> {
>    void (S<int>::*pf) (S<int>&) throw () = &S<int>::foo;
> }
> $ aCC -V -c t.cpp
> aCC: HP ANSI C++ B3910B A.03.25
> Error 722: "t.cpp", line 12 # The exception specification for the source must
>    be at least as restrictive as the exception specification for the
>    destination.
>        void (S<int>::*pf) (S<int>&) throw () = &S<int>::foo;
>                                                ^            
> Error 722: "t.cpp", line 12 # The exception specification for the source must
>    be at least as restrictive as the exception specification for the
>    destination.
>        void (S<int>::*pf) (S<int>&) throw () = &S<int>::foo;
>                                                ^            
> Error 706: "t.cpp", line 12 # An overloaded variable may not be used in this
>    context.
>        void (S<int>::*pf) (S<int>&) throw () = &S<int>::foo;
>                                                 ^^^^^^^^^^^
> ****Modified By: sebor @ Jan 03, 2001 09:51:13 PM****
> Subject: Re: aCC 3.25 confused taking the address of an overloaded member
> Date: Wed, 3 Jan 2001 20:48:08 -0800 (PST)
> From: Dennis Handly <dh...@cup.hp.com>
> To: acxx-beta@cup.hp.com, sebor@roguewave.com
> >Here's another member template problem.
> Martin
> Error 722:  The exception specification for the source must
>    be at least as restrictive as the exception specification for the
>    destination.
> I filed the following for you:
> CR JAGad44411
> Error 722 throw spec problem with member templates
> ****Modified By: sebor @ Feb 23, 2001 09:18:09 PM****
> Bug persists in 3.27:
> $ aCC -V -c -AA t.cpp
> aCC: HP ANSI C++ B3910B A.03.27
> Error 722: "t.cpp", line 12 # The exception specification for the source must
>    be at least as restrictive as the exception specification for the
>    destination.
>        void (S<int>::*pf) (S<int>&) throw () = &S<int>::foo;
>                                                ^            
> Error 722: "t.cpp", line 12 # The exception specification for the source must
>    be at least as restrictive as the exception specification for the
>    destination.
>        void (S<int>::*pf) (S<int>&) throw () = &S<int>::foo;
>                                                ^            
> Error 706: "t.cpp", line 12 # An overloaded variable may not be used in this
>    context.
>        void (S<int>::*pf) (S<int>&) throw () = &S<int>::foo;
>                                                 ^^^^^^^^^^^
> ****Modified By: sebor @ Jan 28, 2003 11:48:35 AM****
> Still broken in 3.39.
> $ cat t.cpp && aCC +w -AA -V t.cpp && ./a.out; echo $?
> template<class T>
> struct S
> {
>    void foo (S&) throw ();
>    template <class U>
>    void foo (S<U>&) throw ();
> };
> int main ()
> {
>    void (S<int>::*pf) (S<int>&) throw () = &S<int>::foo;
> }
> aCC: HP ANSI C++ B3910B A.03.39
> Error 722: "t.cpp", line 13 # The exception specification for the source must
>    be at least as restrictive as the exception specification for the
>    destination.
>        void (S<int>::*pf) (S<int>&) throw () = &S<int>::foo;
>                                                ^            
> Error 722: "t.cpp", line 13 # The exception specification for the source must
>    be at least as restrictive as the exception specification for the
>    destination.
>        void (S<int>::*pf) (S<int>&) throw () = &S<int>::foo;
>                                                ^            
> Error 706: "t.cpp", line 13 # An overloaded variable may not be used in this
>    context.
>        void (S<int>::*pf) (S<int>&) throw () = &S<int>::foo;
>                                                 ^^^^^^^^^^^

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.