[Template] < T, T inValue1, T inValue2> Mingw : compilation erreur ( VC : ok )
Bonjour à tous.
J'ai une fonction définie comme ce qui suit :
Header :
Code:
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:
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:
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 :
Citation:
=== 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 ;).