Pointeur sur une fonction membre templatée et +
Bonjour,
J'ai comme un problème pour définir un pointeur sur une fonction membre templatée et dont la signature fait intervenir des arguments variadiques.
Ci-dessous un code simplifié au maximum et qui illustre le problème rencontré:
Code:
1 2 3 4 5
| struct B {};
struct A {
template<typename T, typename... Args>
bool update(Args&&... args) { }
}; |
Exemple d'usage:
Code:
1 2 3
| A a;
a.update<B>(); // pas de problème
a.update<B>(3.14); // pas de problème |
Maintenant je voudrais obtenir le fameux pointeur sus-mentionné.
Code:
1 2 3 4 5 6 7 8
| // équivalent de a.update<B>();
bool (A::*f)() = &A::template update<B>; // ok
// équivalent de a.update<B>(3.14);
// PAS OK:
bool (A::*f)(double) = &A::template update<B,double>;
// PAS BON NON PLUS:
auto f = static_cast<bool (A::*)(double)>(&A::template update<B,double>); |
gcc (4.8) ou clang (3.4) me disent qu'ils ne trouvent pas de matches pour la fonction membre lors de la définition du pointeur f, et que le candidat est bien-sur bool A::update(Args&&... args)
Si quelqu'un a une idée, je suis preneur. J'ai également essayé avec decltype mais sans succès.
Merci.