問題タブ [std-variant]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - Pythonで使用するためにC++ 17 std::variantをSWIGでラップする方法は?
std::variant を使用する C++17 コードを SWIG で Python にラップしようとしています。
boost::variant のラッピングに関するこの回答 ( https://stackoverflow.com/a/58513139 ) を見つけ、代わりに std::variant で動作するようにコードを調整しました。ただし、回答の仕様によると、コードは「C++ 関数が boost::variant を取る場所ならどこでも、バリアントがその関数引数に保持できる型を透過的に受け入れる必要がある」ように機能する必要があります。この要件は、std::variant への const 参照が使用されている場合にのみ満たされるようです。たとえば、私のC ++ファイルのdummy.cppにある場合
それから私のダミーで
Pythonスクリプトから使用しようとすると、次のように機能します
ただし、これは次のことを行いません。
TypeError: in method 'foo', argument 1 of type 'std::variant< int,double >'.
これを期待どおりに機能させるために、私の variant.i ファイルに何が欠けているかを知っている人はいますか? これは私が持っているファイルです:
これは Flexo の回答からほぼそのまま取得されます。いくつかの変更を保存して、boost::variant の代わりに std::variant で動作するようにします。
c++ - std::variant を任意に多くの定義された型で使用する方法はありますか?
私はちょうど使い方を学んでいてstd::variant
、(原則として)任意の多くのユーザー定義型で構成される型リストを宣言したいと思います。つまり、次のようなもの
ただし、整数N
は原則として何でもかまいません。
これが可能な方法はありますか?