Skip to main content

IV33204: TEMPLATE NOT ACCEPTING DEFAULT PARAM FUNCTION


Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • An implicit template instantiation with explicit specialization,
    using a pointer to a function with a default parameter is
    encountering an invalid error during compile.
    
    
         =====  TEST CASE  =====
    
    template <typename T>
    struct myTemplate       { typedef T type; };
    
    template <typename T>
    struct myTemplate<T *>  { typedef T type; };
    
    void defaultarg(int = 0);
    
    template <typename T>
    void templateFunction(T)
    {
       typedef typename myTemplate<T>::type template_type;
    }
    
    void test()
    {
       templateFunction(&defaultarg);
    }
    
    
    $ xlC -c test.cpp
    1540-1111 (S) Only function declarations can have default
    arguments.
    "test.cpp", line 12.13: 1540-0700 (I) The previous message was
    produced while processing "struct myTemplate<void (*)(int)>".
    "test.cpp", line 10.6: 1540-0700 (I) The previous message was
    produced while processing "templateFunction<void (*)(int)>(void
    (*)(int))".
    "test.cpp", line 17.9: 1540-0700 (I) The previous message was
    produced while processing "test()".
    $
    

Local fix

  • The issue can be worked around by using an explicit template
    instantiation.
    

Problem summary

  • PROBLEM DESCRIPTION:
    Template argument deduction including default arguments in an
    invalid context.
    
    USERS AFFECTED:
    The problem is specific to the use of argument deduction when
    passing a function type to a template function, where the
    function type has a default argument.
    

Problem conclusion

  • The problem has been resolved.
    

Temporary fix

Comments

APAR Information

  • APAR number

    IV33204

  • Reported component name

    XL C/C++ AIX

  • Reported component ID

    5724X1300

  • Reported release

    B10

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2012-12-10

  • Closed date

    2013-02-07

  • Last modified date

    2013-02-08

Fix information

  • Fixed component name

    XL C/C++ AIX

  • Fixed component ID

    5724X1300

Applicable component levels

  • RB10 PSY U858036

       UP C

Rate this page:

(0 users)Average rating

Copyright and trademark information

IBM, the IBM logo and ibm.com are trademarks of International Business Machines Corp., registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the Web at "Copyright and trademark information" at www.ibm.com/legal/copytrade.shtml.

Rate this page:


(0 users)Average rating

Add comments

Document information

XL C/C++ for AIX


Software version:
11.1


Reference #:
IV33204


Modified date:
2013-02-08

Translate my page

Content navigation