[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 06/16 09:47 / Filesize : 198 KB / Number-of Response : 952
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Boost総合スレ part9



1 名前:デフォルトの名無しさん [2010/05/28(金) 11:49:47 ]
過去スレ
Part 8 pc12.2ch.net/test/read.cgi/tech/1251446016/
part 7 pc12.2ch.net/test/read.cgi/tech/1232367742/
part 6 pc11.2ch.net/test/read.cgi/tech/1207749841/
part 5 pc11.2ch.net/test/read.cgi/tech/1192662575/
part 4 pc11.2ch.net/test/read.cgi/tech/1175663346/
part 3 pc11.2ch.net/test/read.cgi/tech/1158991211/
part 2 pc8.2ch.net/test/read.cgi/tech/1139313234/
part 1 pc8.2ch.net/test/read.cgi/tech/1091198276/

■関連サイト■
Boost C++ Libraries
www.boost.org/

Boost 翻訳プロジェクト
boost.cppll.jp/HEAD/

Let's Boost
www.kmonos.net/alang/boost/

boost info
shinh.skr.jp/boost/

757 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 22:45:17.23 ]
boost.spirit.qiでセマンティックアクションから、
一致したruleのrangeを示すiteratorが欲しいのですがclassicを使うしか方法はないのでしょうか?
例えば、以下の様にしたいです。

void action(Iter first, Iter last){ ... }
//...
(char_('(') >> *char_('0') >> char_(')'))[action];

758 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 22:48:13.14 ]
ptreeはutf8一択と心に決めて使うものだし

759 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 13:15:59.82 ]
tupleってfusionよりメリットある部分あるの?

760 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 15:08:01.25 ]
機能が少ない分全貌を把握しやすくてとっつきやすい。
TMPに馴染みのない人がfusionの説明見たら引くでしょ。

761 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 20:56:08.16 ]
そしてtupleのソースコードを読んで引く

762 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 20:58:58.39 ]
俺なんかanyですらやや引きだぜ

763 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 21:23:12.42 ]
any使えて嬉しいことって人生で一度でもあればいいほうだよね

764 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 21:25:13.00 ]
>>753
オレオレ言語作るときに使えないか期待している。
しかし、まだ俺にそのスキルはない。。。

765 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 00:43:23.40 ]
ヘッダをプリコンパイルヘッダーに突っ込んでも遅い。
みんなどうやってんの?



766 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 00:45:44.67 ]
PCを買い替える

767 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 00:49:14.99 ]
それどころかヘッダファイルをRAMDISK上に置いても遅い
極限までOCするとちょっと速くなる
結局並列ビルドが効く様な構成にしてその上でクロック周波数を極限まで上げるしかない
後はメモリアクセス速度とCPUのキャッシュ容量も効いてくるかもな

768 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 02:26:15.97 ]
boostのヘッダー1個、boostを使うソース1個でも十分遅いからな。

769 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 08:09:02.14 ]
64bitにする

770 名前:デフォルトの名無しさん [2011/11/28(月) 09:48:46.81 ]
多倍長整数型の一桁ずつをint型の配列に入れるために、
多倍長整数型をまずstringに代入し、一桁ずつの分割をして、それをboostでint型に変換してみようとしています。
つまり、charを使わないで
多倍長整数→string→string一桁ずつ→int
の変換をしたいのです。
お尋ねしたいのが、string→string一桁ずつの変換をどのように行ったらいいのかということなんです。
もしわかる方がいらっしゃるなら教えていただけると嬉しいです。

771 名前:770 mailto:sage [2011/11/28(月) 09:55:53.46 ]
>>770に補足で、言語はc++です。

772 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 10:14:46.90 ]
基数のべき乗で割ったあまり使えば?

773 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 10:16:56.88 ]
>>772
言われてみればそうやれば簡単にできそうですね

774 名前:デフォルトの名無しさん mailto:sage [2011/11/30(水) 03:44:49.48 ]
OpenMPのような並列ライブラリってありますかね?
素直にboost::threadですかね・・・

boost Proの全自動インストーラーのほうが便利ですね
入れるなら

775 名前:デフォルトの名無しさん mailto:sage [2011/12/02(金) 21:24:52.86 ]
boost.fusionあたり使ってstd::vectorだろうが構造体だろうが
かたっぱしからオブジェクトのメンバーをprintしてくれる
debug関数みたいなのないですか



776 名前:デフォルトの名無しさん mailto:sage [2011/12/03(土) 13:04:42.91 ]
grep のことかな

777 名前:デフォルトの名無しさん mailto:sage [2011/12/03(土) 18:27:57.73 ]
デバッガでウオッチすればいい

778 名前:デフォルトの名無しさん mailto:sage [2011/12/03(土) 19:10:34.41 ]
シリアリズしてstd::cout

779 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 01:45:36.46 ]
シリアライズのコードぱくれば作れそうだな

780 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 12:42:57.64 ]
boost::this_thread::sleep(boost::get_system_time() + boost::posix_time::milliseconds(1));
boost::this_thread::sleep(boost::posix_time::milliseconds(1));
↑ふたつって、意味は同じ?
それとも、下側のソースは、基準になる現在時刻がないから、最低の時間(オーバヘッド)のsleepになる?
どういうルールでどのテンプレートが利用されるのかが理解できないです。
よろしくおねがいします。
…boostスレに書いたほうがいいです?(過疎ってるみたいなのでこちらに書いてみました。)

>【初心者歓迎】C/C++室 Ver.76【環境依存OK
>>836 @ 2011/11/30(水) 10:57:59.02
でも同じ質問を書きましたのでマルチです。1week経ったので引っ越しました。

781 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 15:53:52.11 ]
boostのメルセンヌ・ツイスタを自作のアプリケーションに使用した場合にも
「著作権表示、ライセンス条文、無保証の旨」を書かないと駄目なんでしょうか?
それとメルセンヌ・ツイスタに限らずboostを利用する際にライセンスに関わる注意点はありますか?




782 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 16:34:29.67 ]
>>781
random/mersenne_twister.hpp を見るとライセンスがwww.boost.org/LICENSE_1_0.txtであるとわかる。
バイナリ配布にあたってはライセンス同梱は必要ないようだが、
mersenne_twister.hpp込みでソースを配布するならライセンス表示、同梱は必要だろう。
これはboost全体に言える。

783 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 16:44:24.56 ]
>>782
ありがとうございます
ヘッダを見ればよかったんですね

784 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 20:15:47.01 ]
>>780
> boost::this_thread::sleep(boost::get_system_time() + boost::posix_time::milliseconds(1));
> boost::this_thread::sleep(boost::posix_time::milliseconds(1));
> ↑ふたつって、意味は同じ?
意味は違うがよっぽど変な状況でないかぎり結果は同じ。

this_thread::sleepには指定した日時まで待機するのと指定した期間の間待機するのと二種類ある。
上側は指定した日時(たとえば01時23分45秒まで。上の例だと現在時刻の1ミリ秒後)まで待機するもので
下側は指定した期間(たとえば1秒間。上の例だと1ミリ秒間)待機するもの。
どっちになるかは引数の型で決まる。

785 名前:デフォルトの名無しさん [2011/12/15(木) 07:47:16.25 ]
Boost.Regex って、UTF8 テキストに対して使えますか?
例えば、"." を検索すると”あ”等のマルチバイト文字にマッチするのでしょうか?




786 名前:デフォルトの名無しさん mailto:sage [2011/12/15(木) 07:48:07.75 ]
使えない

787 名前:デフォルトの名無しさん mailto:sage [2011/12/15(木) 12:25:20.07 ]
ダメじゃん

788 名前:デフォルトの名無しさん mailto:sage [2011/12/15(木) 13:51:07.46 ]
馬鹿には無理

789 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 06:51:38.22 ]
Boost.Anyなんて使うならLuaを組み込んだほうがまし

790 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 03:53:05.45 ]
variantやanyを使って実行速度遅くするなら
工夫してunion使った方がマシな気がする
実行速度を落さないunionの拡張はboostにないのだろうか

791 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 08:49:08.27 ]
>>790
素の union で何が不満なの?

792 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 10:41:49.00 ]
unrestricted union使うぐらいならvariantでいいや

793 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 13:59:33.58 ]
boost::array<int,5> arr = { {1,2,3,4,5} };


arrayで要素数を省略した初期化って現状不可能ですか?



794 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 17:48:55.48 ]
微妙に意味がわからないがテンプレートをインスタンス化するときの<int,5>の5の省略は不可能(おそらくずっと)

795 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 18:12:16.28 ]
要素数の後決めしたいとか、array使う意味が皆無になるんだが。



796 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 18:51:36.87 ]
やっぱり不可能ですか、、、
後決めしたいというより、ただただ書くのを省略したいだけなんですがね。。。

797 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 19:16:16.71 ]
>>796
#include <iostream>
#include <boost/array.hpp>
#define ARY(t, n, ...) \
static const t n ## _[] = {__VA_ARGS__}; \
boost::array<t, sizeof (n ## _) / sizeof (n ## _[0])> n = {{__VA_ARGS__}}
int main()
{
ARY(int, arr, 1, 2, 3, 4, 5);
std::cout << arr[2] << std::endl;
return 0;
}

省略できてもあまり嬉しくなかった。

798 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 19:45:18.04 ]
int a[] = {1, 2};
のような事をしたかったってことなんだろうね

799 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 20:56:46.18 ]
まさにそれをしたかった。なぜそうしなかったかというと、境界チェック付きの
配列を使いたかったから。

800 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 21:55:20.06 ]
別スレで同じこといってるやつみたけど
結局boost使うことにしたのかな

801 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 12:54:36.97 ]
ublasってopencvより遅い気がするのだけど気のせい?
ublasの方が速い場合ってエクスプレッショナルテンプレートが効く場合だけ?
gccのコンパイルオプションで同じぐらいの速度にならないものだろうか

802 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 14:50:46.10 ]
>>797
どうでもいいがプリプロセッサの
可変長引数でコンパイルエラー
世の中C99対応のコンパイラばかりではない


803 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 14:54:39.38 ]
>>801
分岐の少ない問題でOpenCVがublasごときに負けたら
OpenCVの存在意義が無くなると思うが?
OpenCVはGPUを使って数百の並列実行してるんだからな。

804 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 21:00:18.40 ]
lexical_cast ってスレッドセーフ?


805 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 20:45:04.63 ]
corutineはそろそろ正式リリースしてくれないものか



806 名前:progress_display mailto:sage [2012/01/08(日) 15:36:56.20 ]
明けましておめでとうございます。
挨拶が遅くなり申し訳ありませんが、今年も何卒宜しくお願いいたします。

807 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 13:20:18.76 ]
>>806
開けましておめでとうございます。

ところで、後でちょっとお話がありますので、
会議室を1時間くらい予約しておいてください

よろしく

808 名前:progress_display mailto:sage [2012/01/09(月) 14:36:31.42 ]
>>807
やだ課長、1時間は短いですよぉ

809 名前:Regex mailto:sage [2012/01/09(月) 17:52:20.64 ]
>>808
打ち合わせどうだった?
何言われたの??

810 名前:boost::tuple mailto:sage [2012/01/09(月) 20:23:36.80 ]
さてと、C++11への引っ越しを始めるとするか・・・。

811 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 20:26:00.89 ]
corutineがいろいろ改変されたのあって
どれが一番いいのかわからない
x86 amd64 のwindows linux mac で動けばいいのだけど

812 名前:progress_display mailto:sage [2012/01/13(金) 23:37:40.00 ]
@typeに登録しておこう(´;ω;`)

813 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 23:51:00.44 ]
shared_ptrってスレッドオフしてallocate_sharedすればintrusive_ptrとパフォーマンスたいして変わらんっすよね?

814 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 05:42:46.00 ]
shared_ptrのサイズはポインタ二つ分。
共有管理オブジェクトにはweak_ptr用のカウンタもある。
大した違いかどうかは場合による。

815 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 09:35:55.06 ]
メモリ intrusive_ptr
生成破棄 intrusive_ptr
参照カウント増減 shared_ptr



816 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 15:11:46.99 ]
ttp://www.boost.org/doc/libs/1_48_0/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/internal_promotion.html
自分で定義した(例えば多倍精度浮動小数点数)型を数学関数内部でも使える様にするにはどうすればいいですか?

817 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 23:51:54.60 ]
ttp://www.boost.org/doc/libs/1_48_0/libs/math/doc/sf_and_dist/html/math_toolkit/using_udt/concepts.html
やったことはないがその型に対してこれ↑を満たすように必要なものを自分で書けばboost::mathでその型を使えるんだろ

818 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 03:32:32.30 ]
void func2( boost::array<int, 3> & c)
{
c.assign( 0 );
}
error: invalid initialization of reference of type ‘boost::array<int, 3ul>&’ from expression of type ‘const boost::array<int, 3ul>’

arrayを参照引数にできないんだっけ?

819 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 07:59:21.04 ]
>>818
おまいはエラーメッセージも読めんのか?

820 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 08:58:09.76 ]
ああ!constついてました

821 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 05:12:42.79 ]
boost::fusion::list a の先頭要素が
a.begin()
で参照できないのがちょっと気持ち悪い

822 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 23:49:52.05 ]
bjamの利点がわからないのですが、autoconfとかを用いずbjamを利用してるのは何故でしょうか?

823 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 00:18:21.01 ]
POCOとほとんど同じ機能持つライブラリ
ありませんか?

824 名前:デフォルトの名無しさん mailto:age [2012/02/02(木) 16:01:00.05 ]
ubuntuでboost入れたら一瞬でインスコ完了で使えるようになった
一方、Windowsではサイズがでかい上にビルドにかなり時間がかかる。
この差はなんでつか?ちなみにWindowsではVCで使う感じです

825 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 16:32:49.79 ]
apt-get とかでパッケージをインストールしたんのなら、既にバイナリが含まれてるからだろ。



826 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 17:06:15.79 ]
なるへそ
Windowsでは全部落としてきて自分でビルドしたからか

827 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 01:20:40.57 ]
>>823
なんでpoco不可?

828 名前:デフォルトの名無しさん mailto:age [2012/02/03(金) 08:07:34.00 ]
ポコチン

829 名前:デフォルトの名無しさん mailto:age [2012/02/05(日) 22:05:47.61 ]
ちんぽこ

830 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 23:10:55.09 ]
ちんぽこ商用ライセンスだと制限きついしなぁ

831 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 00:01:35.59 ]
VC2010 Essentialsを使っています。
boost::serializationを使うと、アプリケーションを作成するためのプロジェクトでも
.libと.expを作ってくれるようになるのですが、これを抑制する方法はないでしょうか?

832 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 00:02:11.18 ]
ちんぼ

833 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 01:54:03.78 ]
っぽ

834 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 02:07:40.85 ]
ぬるぽ

835 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 12:57:55.72 ]
>>831
前に別のライブラリで同じ症状に遭ったことがあるけど、解決策見つからず

本当にどうしても嫌なら、ビルド後のプロセスでdelするとか・・・



836 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 15:29:48.48 ]
libが生成されるってことはエクスポートテーブルもできてるんだから
ファイルを消せばいいってもんじゃないだろ

どこかで間違えて__delcspec(dllexport)が定義されてるんだろうね

837 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 18:34:24.22 ]
serializationがらみで
ttp://codepad.org/bp6RCbxw

boost::shared_ptrのシリアライズコードを改造して、std::shared_ptr用の物を書いたのですが、
コレにカスタムデリータのサポートを追加するいいアイデア無いでしょうか?


838 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 22:45:06.20 ]
poco高すぎだろ
pro買わないとネットワーク系全滅だし

839 名前:デフォルトの名無しさん mailto:sage [2012/02/10(金) 12:34:22.38 ]
>>824
linuxでC++やるときってエディタ何使うんですか
emacsのタグジャンプの設定で苦労した覚えが
今はもっといいのあるんだろうか

840 名前:デフォルトの名無しさん mailto:sage [2012/02/10(金) 17:27:39.08 ]
現在Boostのthreadを使って、ワークパイルを管理するクラス、各スレッドに付随するクラス(ワーカーとします)を作っています。
ワーカーは仕事を一通り終えた後、管理クラスが終了許可を出すまで「待ち」を行うようにするため、mutexとconditionを用いています。
管理クラスが終了許可を出せば「待ち」が解除されてスレッドとして動作していた関数を完了するのですが、待ちが解除されるときにmutexにロックがかけられてしまいます(それより前でmutexにロックはかけていない)。
そのため、ワーカーが破棄されるときにmutexでunlock()関数を使わないとエラーが生じます。

ワーカーで行いたいことは通知が来るまで待つだけで、排他制御の必要はありませんが、わざわざunlock()を使わなければならないのでしょうか。
イメージ的にはconditionにmutexを渡さないwait()があれば期待通りになりそうなのですが、それは存在しません。

よろしくお願いします。また私の解釈に間違いがあれば指摘いただけると幸いです。

841 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 16:10:52.17 ]
待つだけでいいならミューテックスでもいいのでは…そういう話ではない…?
#include <iostream>
#include <boost/thread.hpp>
#include <unistd.h>
void f( boost::mutex* guard )
{
std::cout << "worker: working" << std::endl;
std::cout << "worker: waiting until the mutex was unlocked" << std::endl; guard->lock();
std::cout << "worker: finished" << std::endl; guard->unlock();
}
int main()
{
boost::mutex m;
std::cout << "main: lock a mutex" << std::endl; m.lock();
std::cout << "main: create a worker" << std::endl; boost::thread worker(&f,&m);
std::cout << "main: sleeping 3 seconds" << std::endl; sleep(3);
std::cout << "main: unlock the mutex" << std::endl; m.unlock();
std::cout << "main: waiting for join" << std::endl; worker.join();
std::cout << "main: finished" << std::endl;
return 0;
}

$ ./sample
main: lock a mutex
main: create a worker
main: sleeping 3 seconds
worker: working
worker: waiting until the mutex was unlocked
main: unlock the mutex
main: waiting for join
worker: finished
main: finished

842 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 17:00:53.33 ]
>>841
返信ありがとうございます。
管理側は仕事追加・終了許可時に、ワーカーのインスタンスそれぞれのメンバー変数であるconditionでnotifyすることで待ちを解除させています。
ワーカーは、管理側が仕事を追加すると通知を受けて仕事を開始するためにwhileループ内で待ちを行っています。(終了許可待ちと仕事待ちは共通のconditionとmutex)
void Worker::run() {
 while (true) {
   TaskData* task = NULL;
   while (_taskBag->getTasks(&task)) {
     job(task);
   }
   if (_finishable && _taskBag->numTasks() == 0) {
     _mtx.unlock();
     break;
   }
   _cond.wait(_mtx);
 }
}
ワーカーが複数いるので、mutexロック解除で待ち解除の通知を行うと、「仕事追加→いずれかのワーカーが仕事に着手」の後にmutexの所有権が管理側に戻ってこないかもしれないので難しそうです。
まぁ実装の仕方次第でmutexだけでもいけそうですが。

あとよくよく考えると_cond.wait(_mtx)の時に暗黙的に_cond.wait(mutex::scoped_lock(_mtx))のようになっているんでしょうか。
となると、ロックがwait解除後に再度かけられてしまうのはある意味当たり前ですね。

申し訳ありません。簡潔な文章で伝えるのがもの凄く難しいですねw

843 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 07:46:49.88 ]
waitにはmutexをロック済みのunique_lock渡す必要がある。直接mutexをwaitの渡せているのはたぶんVCのせい。
unique_lockのローカル変数を作ればunlockを呼び出す必要は無い。
condition_variableは他の変数と一緒に使うことが前提。
waitはnotifyの通知以外でも誤って解除されるのでbool変数などと合わせて使わないとだめ。
bool変数で確認するからにはmutexでの排他制御が必要。

844 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 09:57:29.58 ]
>>843
ありがとうございます。
排他制御が要らなく見えていたので、待ちの実現だけにcondition、mutex両方を使うことに冗長さを感じていたのですが、conditionはそもそも単体では使わないものなんですね。

ちなみに_cond.wait(_mtx)の記述はXcode4.2でもできています。C++の引数1つの場合の暗黙的なコンストラクターですね。
こういう場合に暗黙的にできてしまうと見落としてしまう場合があって危険だと感じます。

845 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 11:57:41.20 ]
>>844
それじゃあboostのバージョンが低いだけじゃないの?一時変数は非const参照に拘束できない。



846 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 19:45:57.66 ]
>>845
Boost 1.48です。ちなみに上記の_mtxはワーカークラスのメンバー変数です。

847 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 19:55:58.52 ]
>>846
そうか。あとはコードを実際に追わないと分からないわ。

848 名前:デフォルトの名無しさん mailto:sage [2012/02/14(火) 07:34:07.70 ]
boost::asioの非同期通信でhttpクライアントつくろうと思ってasync_read_someでデータ取ってるんだけど、何故か5kbくらいでデータが途中で切れちゃうんだ
誰かピンとくる人居ないか…助けてくれ

849 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 01:04:19.29 ]
>>848
async_read_until使えば?

850 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 15:40:45.11 ]
今作成中のプログラムに<boost/thread.hpp>と<boost/thread/condition.hpp>をインクルードすると、システムのlocale_facets.tccとboostのshared_count.hppにおいて大量のエラーが発生します。
これらのファイル自体には問題は無く、何らかの依存関係でエラーが出ているんだろうということは想像がつくのですが、全く原因がわかりません。

何かこのような現象について心当たりのある方は居られないでしょうか。

Xcode4.2で、ヘッダーサーチパスには/opt/local/includeを(boostはこの下にインストール)設定しています。ライブラリーファイルのリンクも行っています。

よろしくお願いします。

851 名前:デフォルトの名無しさん [2012/02/15(水) 19:46:15.26 ]
>>850ですが、自己解決しました。申し訳有りません。

原因はboostを使っているソースファイルとは別のファイル内で定義した「swap」という名称のマクロでした。
それぞれのソースファイルを最終的にmain関数で参照する形となっていたためにboost内の何かとマクロ名が衝突したようです。

自分で定義したswapをユニークな名称に変更することで解決しました。

今後どなたかの参考になれば幸いです。

852 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 19:49:52.51 ]
こらたかし!マクロは全部大文字にって言ったでしょ!

853 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 21:30:41.91 ]
さすがにswapをマクロ名にするのはないな

854 名前:デフォルトの名無しさん [2012/02/15(水) 22:26:50.21 ]
cpp側なら問題なかったのですが、実装も含めたヘッダーに書いてしまったのが盲点の原因でした...

855 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 22:40:49.07 ]
気が、狂っとる



856 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 22:45:19.13 ]
君は優秀な人材だぜひマイクロソフトに就職しなさい

857 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 22:53:13.67 ]
>cpp側なら問題なかったのですが
よくねぇよ。
規格にちゃんと、

「標準ライブラリーのヘッダーをincludeする翻訳単位は、全標準ライブラリーヘッダーで宣言されている名前を#defineもしくは#undefしてはならない。」

と書いてある。
だから、ひとつでもどれか標準ライブラリーのヘッダーをincludeしたならば、swapという名前は#defineも#undefもできない。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<198KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef