Project

General

Profile

Bug #2024

Perfect forwarding support is broken for templated entry methods

Added by Sam White 16 days ago.

Status:
New
Priority:
Normal
Assignee:
Category:
Charmxi
Target version:
-
Start date:
10/29/2018
Due date:
% Done:

0%


Description

From Nils Deppe:

The generated decl file for templates with perfect forwarding doesn't work correctly. The generated code is:

    template <class ReceiveTag, class ReceiveData_t, typename Fwd1 = typename ReceiveTag::temporal_id, typename Fwd2 = ReceiveData_t>
    void receive_data(Fwd1 &&impl_noname_1, Fwd2 &&impl_noname_2, bool enable_if_disabled = false, const CkEntryOptions *impl_e_opts=NULL) ;

from the .ci file:

    template <typename ReceiveTag, typename ReceiveData_t>
    entry [inline] void receive_data(
                            typename ReceiveTag::temporal_id&,
                            ReceiveData_t&,
                            bool enable_if_disabled = false);

The issue is that `ReceiveData_t` and `ReceiveTag` cannot be inferred. There is a workaround for this which involves explicitly specifying the first two template parameters. Thus, I'm not sure this is worth fixing, or at least not worth holding up a v6.9 release. I'm also not yet sure what exactly the best solution is.

Also available in: Atom PDF