Bonjour à tous.

J'ai une fonction définie comme ce qui suit :

Header :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
namespace Ca
{
    namespace Math
    {
        /** Retourne l'angle compris dans l'intervalle [inOrigine, inOrigine + inModulo]
        *   @remarks inModulo peut être négatif
        */
        template< typename T, T inOrigine, T inModulo >
        T GetRadianAngleModulo( T inRadianAngle ) ;
    }
}
#include "Ca/Math.tpp"
Template corps :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
template< typename T, T inOrigine, T inModulo >
T Ca::Math::GetRadianAngleModulo( T inRadianAngle )
{
    T aAlpha = std::atan2( std::sin( inRadianAngle ), std::cos( inRadianAngle ) ) ;
 
	aAlpha += inModulo ;
 
    // http://pubs.opengroup.org/onlinepubs/007904975/functions/fmod.html
    T aY = inOrigine + inModulo ;
	return aY ? std::fmod( aAlpha, inOrigine + inModulo ) + inOrigine : aAlpha + inOrigine ;
}
Elle est appelée de la manière suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
float aResult = Ca::Math::GetRadianAngleModulo<float, 0, 6.2831853071795f>( m_SurfaceNode->getOrientation().getYaw().valueRadians() ) ;
Sous Visual express 2008 la compilation et l’exécution se déroule bien.
Sous Mingw la compialtion échoue et m'affiche le message suivant :
error: no matching function for call to 'GetRadianAngleModulo(Ogre::Real)'
( Ogre::Real est le type float )

Voici ma version de Mingw :
=== TDM-GCC Compiler Suite for Windows ===
--- GCC 4.4/4.5 Series ---
*** Standard MinGW 32-bit Edition ***

...

REQUIRED BASE:
* gcc-core (gcc-4.5.2-tdm-1-core)
* binutils (binutils-2.21-3-mingw32-bin)
* mingwrt (mingwrt-3.18-mingw32-dev, mingwrt-3.18-mingw32-dll)
* w32api (w32api-3.17-2-mingw32-dev)
Peut être qu'il y a une fonction existante pour faire ce travail. Si oui je suis tout même intéresser par la résolution de cette erreur.

Merci d'avance .