Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Pointeur sur fonction template

5 réponses
Avatar
David Tschumperlé
Bonjour,
Je d=E9sire d=E9finir un pointeur vers une fonction template (en
l'occurence std::real() de <complex>).
Cette fonction ayant une version const et non const, et voulant un
pointeur vers la version const, j'=E9cris :

#include <complex>

int main()
{
const float& (*pc)( const std::complex<float>& ) =3D std::real<
std::complex<float> >;
return 0;
}

Avec g++, cela me dit :

titi.cpp:12: error: no matches converting function 'real' to type
'const float& (*)(const struct std::complex<float>&)'
/usr/include/c++/4.0.2/complex:531: error: candidates are:
template<class _Tp> _Tp& std::real(std::complex<_Tp>&)
/usr/include/c++/4.0.2/complex:536: error:
template<class _Tp> const _Tp& std::real(const std::complex<_Tp>&)

Et la, j'avoue que je ne comprend pas, d'autant que le deuxi=E8me
candidat est exactement celui qui m'int=E9resse.
Est-ce que quelqu'un aurait une id=E9e pour d=E9finir un pointeur vers
cette fonction ?

Merci d'avance.

5 réponses

Avatar
Marc Duflot
David Tschumperlé wrote:

const float& (*pc)( const std::complex<float>& ) = std::real<
std::complex<float> >;


= std::real<float>;

Avatar
kanze
Marc Duflot wrote:
David Tschumperlé wrote:

const float& (*pc)( const std::complex<float>& ) = std::real<
std::complex<float> >;


= std::real<float>;


= &std::real ;

tout court ne marche pas ? (J'ai l'impression qu'il doit
marcher, mais il faut dire que le texte de la norme ici n'est
pas particulièrement facile à lire.)

--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34


Avatar
David Tschumperlé
Si effectivement ca marche !
Je suis étonné par ces affectations qui prennent en compte le
contexte (membre de gauche)
pour trouver le bon choix.

Merci en tout cas.
Avatar
David Tschumperlé
Ha oui d'accord, merci !
Avatar
kanze
David Tschumperlé wrote:
Si effectivement ca marche !
Je suis étonné par ces affectations qui prennent en compte le
contexte (membre de gauche)
pour trouver le bon choix.


C'est un cas spécial. Il n'entre en jeu que si on prend
l'adresse d'une fonction (avec & ou implicitement), voir §13.4.

--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34