J'essaie de comprendre comment utiliser la bibliothèque Boost.Preprocessor http://www.boost.org/doc/libs/release/libs/preprocessor pour déplier un type "générique" pour différents types spécifiques. Ci-dessous, je vais demander ceci pour un simple exemple de classe de points. Compte tenu:Bibliothèque de préprocesseur Boost pour générer un ensemble de types basé sur une liste de types de base, par ex. PointI32, PointF32 etc en C++/CLI
struct Point##TYPE_SUFFIX_NAME
{
TYPE X;
TYPE Y;
// Other code
};
Je veux générer ce type pour différents types de données de base (POD), par exemple:
PointF32, PointF64, PointI32 etc.
où PointF32 serait:
struct PointF32
{
float X;
float Y;
};
C'est basé sur un liste des types:
short, int, long, float, double etc.
Je veux "déplier" le type ci-dessus pour ceux-ci. De préférence avec la définition "template" dans un fichier d'inclusion séparé et non pas en tant que macro, pour permettre un débogage plus facile.
REMARQUE: les modèles C++ ne m'intéressent pas. Je sais utiliser des gabarits. Mais ce ne sont pas utiles dans mon cas. A titre d'exemple, imaginez que ces types vont être utilisés à partir de .NET en C#, mais sont générés en C++/CLI. Alors, s'il vous plaît, tenez-vous à la question. Le problème, bien sûr, provient du manque de prise en charge des modèles dans .NET et du fait que les génériques ne sont pas adaptés pour résoudre mon problème.
Juste pour m'assurer que je comprends la question. Ce que vous voulez faire est de définir une correspondance entre une liste de suffixes de type et une liste de types, et de laisser la magie du préprocesseur augmenter et de générer tous les types correspondants. Est-ce que c'est ça ? –
Correct. Je pourrais ajouter que j'utilise Visual C++ 2008 avec Feature Pack. – nietras