[過去ログ] Boost総合スレ part9 (981レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
729: 727 [sage] 2011/11/18(金) 20:47:18.46 AAS
あ、ちなみに環境はwindows7でVC++EE2008
boostのバージョンは1.46.1です
730(1): デフォルトの名無しさん [sage] 2011/11/18(金) 22:38:19.46 AAS
>1.46.1です
731: デフォルトの名無しさん [sage] 2011/11/19(土) 02:13:30.33 AAS
>>724724(3): デフォルトの名無しさん [sage] 2011/11/18(金) 13:41:41.76 AAS
VC++2008でエラーになる・・・
boost.moveが原因くさい
#include <boost/unordered_map.hpp>
int main()
{
struct data_type
{
boost::unordered_map<int, int> a;
};
data_type a;
const data_type b;
a = b;
return 0;
}
C++03でのmoveのエミュレーションの限界であり仕様
外部リンク[html]:www.boost.org
732: デフォルトの名無しさん [sage] 2011/11/19(土) 02:53:37.99 AAS
>>726726(4): デフォルトの名無しさん [sage] 2011/11/18(金) 18:19:04.28 AAS
>>724
boostの使用以前にエラー。
クラス型のconstオブジェクトを初期化子なしで初期化する(default-initialized)ときは
そのクラス型はユーザー定義のデフォルトコンストラクタを持っていなければならない。
733(1): デフォルトの名無しさん [sage] 2011/11/19(土) 04:00:51.16 AAS
moveエミュレーションってOFFにできないの?
734: デフォルトの名無しさん [sage] 2011/11/19(土) 08:18:33.39 AAS
>>726は規格準拠の動作。VC++で出るべきエラーが出ないのはいつものことなのでお察しください
735(1): デフォルトの名無しさん [sage] 2011/11/19(土) 13:13:26.51 AAS
よくわからんけど>>728728(2): デフォルトの名無しさん [sage] 2011/11/18(金) 20:46:15.79 AAS
data_type a;
data_type b;
a = static_cast<const data_type&>(b);
でもエラーになるな。
が通らないっていろいろ問題でないか?
736(1): デフォルトの名無しさん [sage] 2011/11/19(土) 14:04:06.67 AAS
std::mapに変えてcodepadで試したけどエラー出なかったぞ
737: デフォルトの名無しさん [sage] 2011/11/19(土) 15:16:38.02 AAS
>>726はclangとかで試せばエラーになるだろうけど
とりあえずboostとは関係ないし軽く流せよ
738: デフォルトの名無しさん [] 2011/11/19(土) 16:22:22.43 AAS
へえ
739: デフォルトの名無しさん [sage] 2011/11/19(土) 17:02:27.30 AAS
>>733
1.47とか古いboost使えば
>>735
boost1.48のコンテナを使うならdata_typeに必要なメンバを追加すれば通るようにはできる
>>736
どういう話だ。
>>724,728が言いたかったのはboost1.48のコンテナを使ったときの話でstd::mapでは再現しない。
>>726が言ってるのはこういう話 外部リンク:codepad.org。
740: デフォルトの名無しさん [sage] 2011/11/19(土) 17:02:36.69 AAS
Boost.Containerのパフォーマンスに期待
741: デフォルトの名無しさん [sage] 2011/11/19(土) 23:12:47.21 AAS
>>730
治りました!
ありがとうございます
742(1): デフォルトの名無しさん [sage] 2011/11/20(日) 07:40:41.25 AAS
Visual C++向けのboostのlibのディレクトリを覗くと、
(1)boost〜.dll
(2)boost〜.lib
(3)libboost〜.lib ※:〜の部分は同じ
という3種類のファイルがあるのですけど、それぞれ何なのですか?
何となく、(3)が静的リンクなライブラリの本体で、
(1)が動的リンクなライブラリの本体で、(2)が(1)向けのインポートライブラリかなぁなんて考えたのですが、
どうして静的と動的と両方あるのだろうか?と考えると、さっぱりわかりません。
boostって静的リンクじゃないのですか?
743: デフォルトの名無しさん [sage] 2011/11/20(日) 08:38:29.93 AAS
どこでダウンロードしたやつだ
公式じゃないよな?
744: デフォルトの名無しさん [sage] 2011/11/20(日) 10:05:05.07 AAS
インストーラ配布してるとこがあるじゃん
んで、boostライブラリにはダイナミックリンクとスタティックリンクの2種類があるよ
ファイルの区別は>>742の通りで間違い無い
もう少し詳しくいうと、末尾に-sgdが付いているのがデバッグCRTスタティックリンク型(/MTd)、
-sが付いているのがCRTスタティックリンク型(/MT)、
-gdが付いているのはデバッグCRTダイナミックリンク型(/MDd)、
何も付いていないのがCRTダイナミックリンク型(/MD)
その他命名規則の詳細はこちら
外部リンク[html]:www.boost.org
745: デフォルトの名無しさん [sage] 2011/11/21(月) 07:27:35.14 AAS
実際スタティックリンクの方が速いな
ダイナミックリンクはどうしてもコールゲートを通すのでリングレベルの移行など
CPUで処理すべき仕事が多く相当速度が落ちる
速度とサイズのトレードオフか
でもDLLやsoもメモリ内に読み込むのでサイズが小さいとも言えないし
同時に走らせるプログラムが多くなってきた時だけ違う
746: デフォルトの名無しさん [sage] 2011/11/21(月) 07:44:52.93 AAS
?
747: デフォルトの名無しさん [sage] 2011/11/21(月) 11:36:28.84 AAS
dllでコールゲート通らないし
しかもリング変えるのにコールゲートとかいつの話だ
748: デフォルトの名無しさん [sage] 2011/11/21(月) 12:13:15.70 AAS
聞いたことある単語を適当に並べてみただけって感じの文だな
749: デフォルトの名無しさん [sage] 2011/11/21(月) 12:14:32.91 AAS
ダイナミックリンクでコールゲートを通すような処理系を教えてくれよ
750: デフォルトの名無しさん [sage] 2011/11/21(月) 16:19:33.53 AAS
リンク時の最適化が効かない以外はあんまかわらんかね
751: デフォルトの名無しさん [sage] 2011/11/24(木) 00:57:26.19 AAS
コールゲートが必要なのはカーネルだけだろ。
カーネルの場合は、ゲートとなるアドレスが記述されていて、
そこへ飛ぶとメモリー空間がユーザー空間からカーネル空間へ変わる。
通常のDLLは、ユーザー空間にコードマッピングして、関数テーブルを
そこのアドレスに書き換えてるだけ。
752: デフォルトの名無しさん [sage] 2011/11/24(木) 21:03:45.95 AAS
助けてください ><
boost::tupleのメンバ関数get<N>をboost::lambda::bindで束縛するにはどうしたらいいでしょう?
下記のコードでは、
error: invalid static_cast from type ‘<unresolved overloaded function type>’ to
type ‘int (*)(const boost::tuples::tuple<int, int, boost::tuples::null_type, boost::tuples::null_type, ....
と言われてしまいます。
get<N>のテンプレート周りかなと思うのですが。。
using namespace boost::lambda;
int r;
r = (bind(
static_cast<int(*)(const boost::tuple<int,int>&)>( &boost::tuple<int,int>::get<0> ),
_1)
) (boost::tuple<int,int>(1,1));
753(2): デフォルトの名無しさん [sage] 2011/11/24(木) 21:43:07.29 AAS
static_cast<const int&(boost::tuple<int,int>::*)()const>(&boost::tuple<int,int>::get<0>)
メンバ関数がどんな型になるか勉強しなおしたほうがよさそう
上下前次1-新書関写板覧索設栞歴
あと 228 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.028s