Est-ce qu'il y a portable manière de déterminer quel est l'alignement maximum possible pour tout type est ?
Par exemple, sur x86, les instructions SSE requièrent un alignement de 16 octets, mais pour autant que je sache, aucune instruction ne requiert plus que cela, de sorte que tout type peut être stocké en toute sécurité dans un tampon aligné sur 16 octets.
J'ai besoin de créer un tampon (tel qu'un tableau de chars) dans lequel je peux écrire des objets de types arbitraires, et je dois donc pouvoir compter sur le fait que le début du tampon est aligné.
Si tout le reste échoue, je sais que l'allocation d'un tableau de chars avec new
est garanti pour avoir un alignement maximal, mais avec les modèles TR1/C++0x alignment_of
y aligned_storage
Je me demande s'il ne serait pas possible de créer le tampon sur place dans ma classe de tampon, plutôt que de nécessiter l'indirection de pointeur supplémentaire d'un tableau alloué dynamiquement.
Des idées ?
Je réalise qu'il existe de nombreuses options pour déterminer l'alignement maximum pour un ensemble limité de types : Une union, ou juste alignment_of
de TR1, mais mon problème est que l'ensemble des types n'est pas limité. Je ne sais pas à l'avance quels objets doivent être stockés dans le tampon.