C++相談室 part166 (569レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

228: デフォルトの名無しさん (ワッチョイ eea1-bAVr) [sage] 2025/06/05(木) 08:27:57.44 ID:ExyrcTL10(1/2) AAS
>>227
227(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 29f7-FMYs) [sage] 2025/06/05(木) 03:33:47.67 ID:lIQfbdfd0(1) AAS
>>226
この場合に呼び出されるコンストラクタは
template<class F> function(F f);
なのでコピーされることはこのシグネチャから自明。
外部リンク[con]:timsong-cpp.github.io

std::function は (同じ形式で呼び出しが可能なら) 違う型のオブジェクトを統一的に扱うことが目的なので入れる型を限定してしまうような構造は std::function を使う甲斐がない。
どういう状況で比較しようとしてるのかわらんけど、そういうのが必要になってるなら設計が根本的に失敗してる可能性を疑う。
レス?クス、

>コピーされることはこのシグネチャから自明。
なるほど……

>std::function は (同じ形式で呼び出しが可能なら) 違う型のオブジェクトを統一的に扱うことが目的なので入れる型を限定してしまうような構造は std::function を使う甲斐がない。
それはそう

>そういうのが必要になってるなら設計が根本的に失敗してる可能性を疑う。
これはスレッドの終了時にコールバック関数を呼ぶ仕組みにおいて、
コールバック関数とコールバックを待機する関数の組み合わせが本当に正しいか待機関数側でチェックするのに使い鯛、
(コールバック関数は自由に登録できるようにする必要があり、
 コールバックされたとき単に処理を進めるだけで待機の解除をなんら行わないコールバック関数とかもあるので
 対応を間違ったらバグ
229
(2): デフォルトの名無しさん (ワッチョイ eea1-bAVr) [sage] 2025/06/05(木) 08:28:31.27 ID:ExyrcTL10(2/2) AAS
コールバック関数の自由な登録というのをstd::function<T>として登録することを考えて居たけんども
素のstd::function<T>ではチェックが自由にできないということがわかりた……
MSVCとかで関数を入れたstd::function<double (int, long)>に対し関数オブジェクトfooとしてtarget<foo>()するか
反対のことをしたらcatchできない例外が発生すた、(多分構造化例外か何かでSTLの仕様的にはおそらく未定義動作
故に素のstd::function<T>を使おうとする限り、入れるブツをdynamic_cast可能な関数オブジェクトに限定するとかしないと
手の打ちようが無いorz
現実解はstd::function<T>をwrapした「コールバック関数クラス」の創設……
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 1.139s*