問題タブ [boost-ref]
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++ - boost::ref および boost::asio 完了ハンドラ、参照渡し
私はコードのセクションでこの呼び出しを行っていますが、基礎となる型i
は明らかに呼び出し可能です (boost::ref を削除すると値渡しにつながり、正常に動作するため)、clang は次のことを教えてくれます:
どうすれば参照渡しできますか。非同期呼び出しよりも長く存続するオブジェクトがあり、それらを参照渡しできれば、より洗練されたものになります (boost::shared_ptr<..> がメンバーとして少ない)。
- 編集 -
asio の example ディレクトリを grep しましたがboost::ref
、完了ハンドラについては示されていません。だから私はここで運が悪いと思います。ハンドラーに ref を受け入れるバージョンがない理由はありますか?
-- 編集 2 : 私がどのように見えるか (実装に疑いがない限り、これを見ないでください)。--
c++ - 引数を渡すときに Boost.Parameter ライブラリで boost::ref を使用する方法は?
名前付きパラメーターをコンストラクターに提供するために、Boost.Parameter ライブラリーを使用します。
通常windowFunction
はオブジェクトでコピーされるのboost::function
ですが、 で参照渡しもできるようにしたいですboost::ref
。
boost::ref
ただし、が削除された関数オブジェクトを渡すreference_wrapper<T>
と、ArgumentPack にはT
値への参照が含まれます。
質問:reference_wrapper<T>
ラッパーの除去を防ぐ方法はありますか?
例:
の代わりにのコンストラクターでに渡さSomeFunctionObject& s
れます。したがって、コピーされることは望ましくありません。mWindowFun
ClassAImpl
const reference_wrapper<SomeFunctionObject>&
s
boost::function
c++ - boost :: refでは一致する呼び出しエラーは発生しませんが、std::refでは発生しません
ファンクターと、または(C ++ 11の場合)名前空間からのテンプレートを使用して、ベクトルの要素の数をカウントするコードをref
作成しましたbind
。と名前空間を切り替えるためにを使用しています。Boostバージョン1.53を使用していて、コンパイルコマンドはです。gccバージョン4.7.2と4.6.3で試しましたが、両方で同じエラーが発生します。boost::
std::
#define
boost::
std::
g++ test.cpp -std=c++11
私は3つの質問があります:
- 例2で発生するエラーがわかりません。
- 名前空間を切り替えるだけで、このようなコードを移植可能にすることは可能ですか?
- 、、
std
およびboost
のバージョンの違いを詳細に説明している優れたリファレンスはありますか?(私はこの質問を見ましたが、答えは言及していませんまたは)bind
ref
function
ref
function
ありがとう!
PSこの例は私の問題を示しているだけです、私は知ってsize()
いますstd::vector
:-)
c++ - なぜこのプログラムはboost::refを使っているのですか
Ref ライブラリは、通常は引数のコピーを取る関数テンプレート (アルゴリズム) への参照を渡すのに役立つ小さなライブラリです。
http://www.boost.org/doc/libs/1_53_0/doc/html/boost_asio/example/chat/chat_server.cppから
インコール配信 -
もし
別のクラスで参照によってメッセージを取得しているのに、なぜ boost::ref が使用されるのですか?
c++ - C++ のブースト ラッパーでオブジェクトを削除する
要素を持つクラスがあります
std::list<boost::reference_wrapper<polygonType> > m_children;
このクラスからオブジェクトが作成されると、そのオブジェクトのすべての子を参照としてこの変数に格納します。私がやりたかったのは、オブジェクトのデストラクタが呼び出されたときに、子のデストラクタが呼び出されるようにすることです。
- この場合、それは自動的な動作ですか?または、このリストに参照がある場合、何かを書く必要がありますか?
- それらを削除したくない場合は、どうすればよいですか? それらを削除したい場合、何をする必要がありますか?
これは基本的に、私が下したいくつかの設計上の決定と、それらをどのように修正したいかによるものです。
python - オブジェクトを Boost.Python モジュールに渡すために std::ref を使用できないのはなぜですか?
環境: Python 3.5 でコンパイルされた Boost 1.61.0
次の C++ コードの出力12
:
ただし、 に置き換えるboost::ref
とstd::ref
、boost::python::error_already_set
インスタンスがスローされます。
なぜstd::ref
ここで使用できないのですか?