C4127: L'expression conditionnelle est constante

Le code suivant génère un avertissement C4127 (expression conditionnelle est constant) dans Visual Studio 2010 (où alias_wchar_t est un alias pour wchar_t):

if (sizeof(alias_wchar_t) == sizeof(wchar_t)) //warning occurs here
{
    //do stuff
}
else
{
    //do other stuff
}

Ce qui est la façon la plus élégante pour résoudre ce problème, bref de suppression de l'avertissement?

La meilleure solution que j'ai trouvé est de farcir le conditionnel en static bool, et de l'utiliser comme condition. Il y a une bonne quantité de code ci-dessus et en dessous de la si-sinon, j'ai donc envelopper le tout dans des accolades pour limiter la portée de la variable autant que possible:

//<snip>

{
    static bool isSameSize = (sizeof(alias_wchar_t) == sizeof(wchar_t));
    if (isSameSize)
    {
        //do stuff
    }
    else
    {
        //do other stuff
    }
}

//<snip>

Ce qui se sent assez brut. Cela semble comme il devrait être résolu au moment de la compilation plutôt que de l'exécution, mais le préprocesseur ne sais pas à propos de sizeof. Est-il plus propre, plus élégante façon de résoudre ce problème?

source d'informationauteur Christopher Berman