それらの型情報を取得するために、プレーンな古いデータ型のメンバーを適切にループする方法について疑問に思っています。あれは :
struct my_pod
{
int a;
double b;
};
template<typename POD>
void loopOverPOD()
{
for_each(POD, member) // The magic part
{
// member::type should be for my_pod int, then double
typename member::type i;
// member::size_of should be equal to sizeof(int) then sizeof(double)
// Trivial if we can have member::type information.
int size = member::size_of;
// member::offset_of should be equal to 0, then sizeof(int)
// Trivial if we can have member::size_of information.
int offset = member::offset_of;
}
}
私の知る限り、C++ では、テンプレートを使ってトリッキーな操作を行わずに簡単な型のイントロスペクションを行うことはできません。しかし、ここでは、実際にマクロを使用しても、テンプレートで具体的な解決策を見つけることができません。そして、問題は解決策の存在よりもむしろ私に関係しています。:-)
私は必ずしも邪魔にならない解決策を求めているわけではありません。
前もって感謝します。