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:38:50 UTC

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

[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.


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

Posted by "Martin Sebor (JIRA)" <ji...@apache.org>.
     [ 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.