問題タブ [boost-preprocessor]

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.

0 投票する
1 に答える
917 参照

c++ - C++ 11、名前と親クラスのみを持つクラス関数をプロキシする方法は?

クラスタイプと関数名から関数プロキシを作成するために、boost::mpl/preprocessor またはいくつかの noce C++11 機能を使用できるかどうか疑問に思います。

私たちが持っていたとしましょう:

クラス内メール。set_email 関数があることはわかっているので、次のような API を使用してプロキシ クラスを作成します。

set_emailオーバーロードのいずれかを呼び出す能力があります.タイプ(名前のみ)を知らない任意の数のオーバーロード関数をプロキシするようなクラスを作成することは可能ですか?

0 投票する
3 に答える
1190 参照

c++ - 空のシーケンスの BOOST_PP_SEQ_ENUM

のようなマクロを作成するにはどうすればよいですかBOOST_PP_SEQ_ENUM。ただし、空のシーケンスを処理します。

0 投票する
1 に答える
941 参照

c++ - 可変長引数の場合はBOOST_PP_ITERATION

プロジェクトの1つにを組み込みたいと思ってluabindいます。そのためには、call_function(以下を参照)と同様に動作する関数を提供する必要があります。この関数は、いくつかのテンプレートマジック(Boostの提供)を使用しており、助けていただければ幸いです。テンプレートメタプログラミングに実際に出くわしたのはこれが初めてであり(それはそれが呼ばれているものですか?)、それで私は少し迷っています。助けていただければ幸いです。

このプリプロセッサビットが何をしているのかよくわかりません。それが何と呼ばれているのかさえわからないので、検索は少し難しいです。Aテンプレートタイプです。私が正しく覚えていれば#a、の文字通りのテキストを挿入しますがa、倍数は何をし#ますか?このプリプロセッサのものの後にこれが来る。

ご覧のとおり、Boostを多用しています。私はグーグルで検索しましBOOST_PP_ITERATIONたが、それでも実際に何をしているのか理解できません。誰かが私に、できればこのコードのコンテキストで、何をしているのBOOST_PPか、そしてそれがどのように引数をに入れるのかを説明してもらえますかargs

私の最終目標はcall_function、自分で定義argsするオーバーロードに渡すことができるコードを生成するコード内を定義することcall_functionです。これは、同じ呼び出し規約を使用できることを意味しますが、を呼び出す前にいくつかの前処理を適用することもできますluabind

この質問は、私が言った方法では非常に具体的ですが、ここで問題がないように、概念が十分に一般的であることを願っています。

0 投票する
1 に答える
330 参照

visual-studio-2010 - ブーストプリプロセッサ-奇妙な結果

次のマクロを確認してください。

目標は、各タプルの前後に二重括弧を追加して、次のようにすることです。

ここで、次のマクロを使用してこの作業を行います。

結果は次のとおりです。

OUTPUT0は問題ありません:

ただし、BOOST_PP_CATが呼び出されると、OUTPUT1の結果は次のようになります。

私はこの振る舞いを理解していません。ヒントはありますか?

VisualStudio2010を使用していることに注意してください

0 投票する
2 に答える
1990 参照

c++ - Boost プリプロセッサが拡張しない

次のコードがあります。

これを Clang 3.2 または g++ 4.6.3 で前処理すると、次のようになります。

(わかりやすくするために改行を追加しました)

問題は、内部の BOOST_PP_SEQ_FOR_EACH が展開されないのはなぜですか?

この出力を再度渡すと、期待される結果が展開されます。

編集:多くの検索の後、マクロが2回呼び出されると展開されないことを読みました。それが理由だと思います。

編集: PP_SEQ_FOR_EACH_I を使用する必要がありました。R は添字として使用するためのものではありません。

0 投票する
1 に答える
43 参照

preprocessor - プリプロセッサによるファイル反復

ブーストのファイル再帰では、再帰を使用するファイルがインクルード パスにある必要があるというのは正しいですか?

ドキュメントのどこにも表示されませんが、これが当てはまると思われる問題をデバッグしました。これにより、これをボイラープレート コードを自動的に生成する手段として使用することは、ライブラリ ヘッダー ファイルがインクルード パスにない可能性があるため、ライブラリに使用する場合に多少制限されます。

コメントはありますか?

0 投票する
1 に答える
439 参照

c-preprocessor - インクルードファイルによるマクロ展開順

インクルードファイルにマクロがあるとしましょう:

そして、それを含む別のファイル:

VALUE が SUBSTITUTE に定義され、3 への 2 つのパスでマクロ展開される場合ですか、それとも VALUE が SUBSTITUTE のマクロ展開された値 (つまり 3) に設定されている場合ですか?

Boost プリプロセッサ ライブラリと、その BOOST_PP_SLOT がどのように定義されているかを理解しようとするために、この質問をします (編集:基本的な仕組みを意味します)。したがって、上記の質問をしている間、誰かがそれを説明できるかどうかも興味があります.

(そして、「塗装された青」のルールを見つけるための一体どこに書かれているのか知りたいとも思います...)