[ https://issues.apache.org/jira/browse/STDCXX-389?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12487653#action_12487653 ]
sebor edited comment on STDCXX-389 at 7/31/08 11:22 AM: --------------------------------------------------------------- Removing the const qualifier from the declaration of the formal function argument allows the compiler to deduce the cv-qualifiers from the actual argument to the call: {noformat} $ cat t.cpp && aCC -AA -V t.cpp template <class T> void foo (T&) { } template <class T> void bar (T*) { } int main () { int i = 0; const int ci = 0; volatile int vi = 0; const volatile int cvi = 0; foo (i); foo (ci); foo (vi); foo (cvi); bar (&i); bar (&ci); bar (&vi); bar (&cvi); } aCC: HP ANSI C++ B3910B A.03.73 92453-07 linker command s800.sgs ld PA64 B.11.45 REL 050725 /usr/ccs/bin/ld: 92453-07 linker linker ld B.11.45 050725 {noformat} was (Author: sebor): Removing the const qualifier from the declaration of the formal function argument allows the compiler to deduce the cv-qualifiers from the actual argument to the call: $ cat t.cpp && aCC -AA -V t.cpp template <class T> void foo (T&) { } template <class T> void bar (T*) { } int main () { int i = 0; const int ci = 0; volatile int vi = 0; const volatile int cvi = 0; foo (i); foo (ci); foo (vi); foo (cvi); bar (&i); bar (&ci); bar (&vi); bar (&cvi); } aCC: HP ANSI C++ B3910B A.03.73 92453-07 linker command s800.sgs ld PA64 B.11.45 REL 050725 /usr/ccs/bin/ld: 92453-07 linker linker ld B.11.45 050725 > [HP aCC 3.73] fails to deduce volatile T > ---------------------------------------- > > Key: STDCXX-389 > URL: https://issues.apache.org/jira/browse/STDCXX-389 > Project: C++ Standard Library > Issue Type: Bug > Components: External > Environment: HP aCC 3.73 > Reporter: Martin Sebor > > -------- Original Message -------- > Subject: aCC 3.73 fails to deduce volatile T > Date: Mon, 09 Apr 2007 10:55:33 -0600 > From: Martin Sebor <[EMAIL PROTECTED]> > Organization: Rogue Wave Software > To: [EMAIL PROTECTED] > The program below fails to compile with 3.73 (it compiles fine > with the EDG-based compilers). > Martin > $ cat t.cpp && aCC -AA -V t.cpp > template <class T> void foo (const T*) { } > int main () { foo ((const volatile void*)0); } > aCC: HP ANSI C++ B3910B A.03.73 > Error 226: "t.cpp", line 2 # No appropriate function found for call of > 'foo'. Last viable candidate was "void foo<void>(const void *)" > ["t.cpp", line 1]. Argument of type 'const volatile void *' could not be > converted to 'const void *'. > int main () { foo ((const volatile void*)0); } > ^^^ -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.