IBM Support

LI77444: 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

    LI77444

  • Reported component name

    XL C/C++ FOR LI

  • Reported component ID

    5724X1400

  • Reported release

    B10

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2013-06-11

  • Closed date

    2013-06-11

  • Last modified date

    2013-06-11

  • APAR is sysrouted FROM one or more of the following:

    IV33204

  • APAR is sysrouted TO one or more of the following:

Fix information

  • Fixed component name

    XL C/C++ FOR LI

  • Fixed component ID

    5724X1400

Applicable component levels



Document information

More support for: XL C/C++ for Linux

Software version: B10

Reference #: LI77444

Modified date: 11 June 2013