[C++11] Templates variadiques et fonctions lambdas
	
	
		Bonjour,
J'aimerais capturer des paramètres template variadiques pour les utiliser dans une fonction lamba, mais g++ 4.5.2 sous Linux (Ubuntu 11.04) n'a pas l'air d'apprécier...
	Code:
	
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 
 | template <typename InputIterator, typename ResultType, typename... Args>
void apply(InputIterator first, InputIterator last,
           ResultType (std::iterator_traits<InputIterator>::value_type::*f)(Args...),
           Args&&... args)
{
    typedef typename std::iterator_traits<InputIterator>::value_type value_type;
 
    std::for_each(first, last,
                  [&](value_type const& obj) { return (obj.*f)(std::forward<Args>(args)...); });
} | 
 me donne :
	Code:
	
| 12
 
 | toto.cpp:9:78: error: parameter packs not expanded with `...'
toto.cpp:9:78: note:         `args' | 
 Par contre, code fonctionne compile bien :
	Code:
	
| 12
 3
 4
 5
 6
 7
 8
 
 | template <typename InputIterator, typename ResultType, typename... Args>
void apply(InputIterator first, InputIterator last,
           ResultType (std::iterator_traits<InputIterator>::value_type::*f)(Args...),
           Args&&... args)
{
    for( ; first != last; ++first)
        ((*first).*f)(std::forward<Args>(args)...);
} | 
 
J'imagine que le problème vient du fait que j'essaie de capturer des rvalue reference par référence.
Est-ce que c'est bien le cas ?
Y a-t-il un moyen de faire passer les paramètres template via la fonction lambda ?