Boost logo

Boost Users :

Subject: Re: [Boost-users] Bind/Function: use reference arguments in template variadic functions
From: Yannick POTIN (yannp63_at_[hidden])
Date: 2013-04-12 18:34:12


>

>

>> template<class ...classes>

>> boost::function0<void> call_something(classes&... c)

>

> Thank you, It actually allows me to use references in these functions.

> I just tried and g++ is waiting for only references but I need to use pointers and/or values too.

> There is a way to use mixed types in template variadic functions ?

>

For perfect forwarding use:

template<class... T>
void call(T&&... t)
{
   foo(std::forward<T>(t)...);
}

I tried this one too and it works fine thank you.

However, I use these functions with boost::bind library and actually references
are lost when I use it (and I need to). After some google searches, it seems that
boost::bind officially does not support this use (due to internal references).
So I tried with std::bind because I read somewhere the problem was fixed with its C++11 version.
The problem is the same : with std::bind too, references are lost using std::forward.

Does anyone made this duo bind/template variadic functions working together ?
And if someone did, how did you do ?

Sorry, I lost context with what you're trying to do, but maybe you want to use boost::ref / std::ref in conjunction with boost::bind / std::bind, respectively? I think that should indicate to the binding framework to hold the bound values by reference rather than by value (if that's what you want).

- Jeff
Actually, I try to use template variadic functions which can contains references, pointers and/or values which must be converted to boost::function0<void>.

I tried to use forward() but I lose references with it. I tried ref() to but it make values interpreted as references (so ints are broken). So I'm looking for a magic way to use ref() only when needed by the arguments.

Regards,

Yannick POTIN



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net