私はCで実装されたバリアント型のC++ 11ラッパーを扱っています。バリアント型はint、float、stringのような一般的なデータ型をサポートしますが、タプルもサポートします。私はフォームの基本的な型のコンバータを持っています...バリアントの配列をstd :: tupleに変換する
template<typename T>
T convert_to(const Variant &var);
...しかし、私はstd :: tupleへの変換に苦労しています。
基本となるC APIは、バリアントの配列を返すことによってタプルを分割することができます。
int get_tuple(Variant var, Variant **argv, int *argc);
は、今私は、私は手動でタプルの各サイズのテンプレートを作成することができます認識し、私はタプルの任意のサイズを扱うことができる可変引数解決策を探しています:それは次のようになります。これにアプローチする方法についてのヒント?
私が実際に取り組もうとしていることは、Erlang NIF APIです。
このタプルの概念は、簡単に 'std :: tuple'にマップされますか?そのアリティは、コンパイル時ではなく、実行時に利用できるようです。もし既知の場合と小さい場合の可能な数の場合は、あなたはこれを抜け出すことができますが、その型に対する最終的なインタフェースは 'std :: tuple'のようには見えません。 –
私は、バリアントタプルの要素がstd :: tupleの要素と一致しない場合、例外をスローするつもりです。 – goertzenator