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

Add comments

Document information


More support for:

XL C/C++ for AIX

Software version:

11.1

Reference #:

IV33204

Modified date:

2013-02-08

Translate my page

Machine Translation

Content navigation