Perfect forwarding support is broken for templated entry methods
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.