|
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