Ich versuche so etwas zu tun:
#include <iostream>
#include <random>
typedef int Integer;
#if sizeof(Integer) <= 4
typedef std::mt19937 Engine;
#else
typedef std::mt19937_64 Engine;
#endif
int main()
{
std::cout << sizeof(Integer) << std::endl;
return 0;
}
aber ich bekomme diesen Fehler:
error: missing binary operator before token "("
Wie kann ich das bedingte typedef korrekt erstellen?
enable_ifoder conditionalbedingt definieren, aber Sie können dafür keinen Präprozessor verwenden.
sizeofunter Präprozessorbedingungen nicht funktionieren kann, liegt darin, dass die Sprache auf diese Weise definiert ist und nicht daran, wie eine Implementierung funktioniert.
sizeofoder andere C ++ - Konstrukte. Es weiß sicherlich nichts über Dinge, mit denen Sie sich selbst erstellt habentypedef, da dies noch nicht einmal analysiert wurde.