Boostを語れゴラァ part4
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2007/04/04(水) 14:09:06過去スレ
part 3 http://pc11.2ch.net/test/read.cgi/tech/1158991211/
part 2 http://pc8.2ch.net/test/read.cgi/tech/1139313234/
part 1 http://pc8.2ch.net/test/read.cgi/tech/1091198276/
■関連サイト■
Boost C++ Libraries
http://www.boost.org/
Boost 翻訳プロジェクト
http://boost.cppll.jp/HEAD/
Let's Boost
http://www.kmonos.net/alang/boost/
boost info
http://shinh.skr.jp/boost/
0002デフォルトの名無しさん
2007/04/04(水) 14:09:31Boost C++ Libraryプログラミング
http://www.amazon.co.jp/exec/obidos/ASIN/4798007862/
Beyond The C++ Standard Library
http://www.amazon.co.jp/exec/obidos/ASIN/0321133544/
C++ Template Metaprogramming
http://www.amazon.co.jp/exec/obidos/ASIN/0321227255/
The Boost Graph Library
http://www.amazon.co.jp/exec/obidos/ASIN/0201729148/
■関連スレ■
class C++相談室lt;part56gt;
http://pc11.2ch.net/test/read.cgi/tech/1170343752/
【C++】STL(Standard Template Library)相談室 6
http://pc11.2ch.net/test/read.cgi/tech/1160821240/
0003デフォルトの名無しさん
2007/04/04(水) 14:09:44http://boost-consulting.com/boost/
Loki
http://sourceforge.net/projects/loki-lib/
JTC1/SC22/WG21 - The C++ Standards Committee
http://www.open-std.org/jtc1/sc22/wg21/
POCO, the C++ Portable Components
http://www.appinf.com/poco/info/
http://sourceforge.net/projects/poco/
The unofficial BCB Boost patches
http://bcbboost.sourceforge.net/
0004デフォルトの名無しさん
2007/04/04(水) 15:25:44乙
0005デフォルトの名無しさん
2007/04/04(水) 16:30:34|← reject| boostの中の人 display ユーザー
. ̄.|| ̄ ̄ ┗(^o^ )┳(^o^ )┳(^o^ )┛≡=-
|| ┏┗ ┗┗ ┏┗ ≡=-
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
0006デフォルトの名無しさん
2007/04/04(水) 16:33:10乙!
0007デフォルトの名無しさん
2007/04/04(水) 18:25:160008デフォルトの名無しさん
2007/04/06(金) 11:08:07r::ニミ:ヽ /:/ / ハ ヽ「:| ___「:|__
V /:/ :./ : .:./ .:/:. .:./::/ V :.:. :.: ', |:.| `コ::|"
r::‐:::ヘ /:./ :./ .:: .:./ .:/:.:. .:/:/ V:.:.:l :.:.: ', ヾ} {_c:人>
 ̄ ̄ {./|:. :| :.:._;|_:.:.|:.:.:./|:| " ̄ `ト|、| :.:. |:. :.|
「::.| |:.:.| イ´:| :| ハ:./ || ___ |:| |><|:. :| 「::|
|:〉|:〉 「::| |:::| |:.:|:l :| ||_ハ| |:| i rテ=ミV|==⇒|::.:/ 「::|. |:::|
r::ニミヽ ヾ> |:::} V|:ハ:|/ri⌒ミ リ {:i::::::::ハ.} :.::.:.:.|:/ \ ヾ> |:::}
V くノ r―ト|:|:{.{:i::::::}} {:{::::::rり :.:::: :/ーー<. くノ
r::‐:ヘ __ _.>ニ:| ||:.}ヾ辷タ ヾ‐c/ :.:::.:/―‐ ァ 〉 __
 ̄ ̄ 「::| `つ:}| V| ||::{xxx. __,.(..・xx:/ :.:/:∧  ̄レ / ノノ `つ:}
「::| |:::|  ̄∧ V :ハ:>r::::::、_____,,. ィ/:./レ ',ー’ーく \  ̄
. ヾ> |:::}ヽヽ/ ∧ V:./V_レつ::::}}::::::::::// \ | ∨ヽ\ \
くノ ./ ///√「 ヽ/{ `Y|=/ _/⌒ ヽ |. |ハ:.:.ヽ.ヽ >
/ //// / | ∧ \__,人i_/‐‐┐ / }/ |i |:.:.}.ハ. ̄
く__ //:.:/ くr―レヘ..__〉イト 、_ノ ...:.〈 {⌒V./|.:.:| |
{:.:.| |i | 〈 | | :.:.:.:.:.| } .ノ |l.:.| |
0009デフォルトの名無しさん
2007/04/08(日) 06:09:19apply_visitor(Visitor(), v);
と書くと、vに入れた型に合った
operator()が呼ばれるようですが、
これは実行時型情報を利用しているんでしょうか?
0010デフォルトの名無しさん
2007/04/08(日) 14:44:29俺だけではないはずだ
0011デフォルトの名無しさん
2007/04/09(月) 00:15:210012デフォルトの名無しさん
2007/04/09(月) 04:35:29人がいなさすぎてビクビクしてしまった
progress_displayは間違いなくreject
/ ̄\
| ^o^ |
\_/
0013デフォルトの名無しさん
2007/04/10(火) 02:33:19>r_ Z: _L|:.:.:.:.:.:::::::::_;r、_:.:.:\ l/: : : フ /
//⊂_ 7'ナ))::::::::::::::{f⌒ヽ!::::.__l': : :ろ/フ
l l.:.:.:.: ̄ヽ=':':::::::::::::::::}ゞ___リ::::{(メV-‐'_/
| v⌒ヽ__/\__'‐=_ニ)::::::>=レト、<
|}.ハ  ̄' ¬'´ .L_::.|  ̄
, -‐¬;:.| / ̄不_¨'‐┬―- 、, __ `7
/`' 、/.:.:.:.:.:.:/:乃;ィハ//ィチ心-tiヾ.:.l\l__,>,'¬_/
. {.:.:.:.:.:.:|ィ.::::ィ::ハ;::::入L !.'弋_ツ `ヽア牙!/}:\|`ー―ァ _ __
}.:.:.:.:.:.:リ:/V`'‐、L__>、 ゞ''’/イ::人.:.:.:.:.:.:.___> /レ' レ' /
ノ.:.:.:.:.:.:.:'.:.:.:.:.:.:.:./⌒ヽ>、>、, ―_´,..、イ\ノ `ー―‐` ./V _ ./7/7 /
(.:.:.:.:.:.:.:.:.:.:.::./:/ ,. -‐'´.:.:/へ三≡=ニ不ヽ | .__|:` : : //
):::.:.:.:、.:.:.:.:(ー'´.:.:.:.:.:.:.:.:.:/.:.:.:.:.:./ろ ̄`コ'}`i、,___ ヘ, l: : : : : | |_________
__>、::.:.:.:.`ー个.:.:.:.:.:.:.:.:.:/.:.:.:.:.:./ヱ´ ム-l {r、 __l |ー―.、ミ,、_riニュL| ,、-‐.'ニ';ー‐---―‐.'ニ
.:.:.:.:.:.:.:.:\:::::::::::::):::.:.:.:.:./.:.:.:.:.:.:/_Lフ`'‐ァt⊂--'_)'r‐v'ノ r-ニH/⌒'k_/r┐  ̄ ̄ ̄ r┐
.:.:.:.:.:.:.:.:.:.:: ̄ ̄7|::::::.:.:.:.:.:.:.:.::::/_ ス::ノ}.―t;:'‐イl7フ}¨「f'l< }: {_,{.l �] }})、___, -‐.'ニ';‐- 、_,
.:.:.:.:.:.:.::::::::::::::::::::V7ー―--くヽ「_::::〉iイ}7フ/¨‐ヘ`-<∠ノ-'`ー┴’フ>ヾミ'_ソス`ー--- '´ `'ー-‐
.:.:.:.::::::::::::::::::::::::::::rヲマ_ト-レ`.:.:'==イ〈 } } _<i ̄Zオ | l 厂‐┘ヽヽ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
.:.::::::::::::::::::::::::::::r┴┐:.:.:.:.:.:.:.:.:.:.:.:__;}.:.ヽノ.ノr=='O.rァノ l l l: : : : : : ヽ\
0014デフォルトの名無しさん
2007/04/11(水) 14:21:15http://opensource.adobe.com/gil/
で、デザインガイドのとこに
concept
ってのがでてくるんですが、これって何ですか?
ソースでは使われてないので概念的なことだとは思うのですが。
0015デフォルトの名無しさん
2007/04/11(水) 14:32:210016デフォルトの名無しさん
2007/04/11(水) 16:58:580017デフォルトの名無しさん
2007/04/11(水) 19:29:39concept_mapだっけか
0018デフォルトの名無しさん
2007/04/11(水) 22:32:41ttp://www.boost.org/more/generic_programming.html
ttp://boost.cppll.jp/HEAD/more/generic_programming.html
この辺とか。
0019デフォルトの名無しさん
2007/04/12(木) 00:38:25サンクス。
C++0xで採用予定っぽいのは調べてるうちにわかった。
とりあえず、concept = 実装を伴わないインターフェース
って風に理解した(おおざっぱだけど)。
0020デフォルトの名無しさん
2007/04/12(木) 04:33:02先取り実装
つhttp://www.generic-programming.org/languages/conceptcpp/tutorial/
0021デフォルトの名無しさん
2007/04/12(木) 19:06:41A( 1 )
in block
A( 2 )
~A( 1 )
out block
~A( 2 )
みたいな出力を期待したのですが、違いました。 ばぐですか?
ソース:
struct A {
A(const int id) : id_(id) { cout << "A( " << id << " )" << endl; }
~A() { cout << "~A( " << id_ << " )" << endl; }
int id_;
};
int main() {
boost::shared_ptr<A> a(new A(1));
boost::weak_ptr<A> wa(a);
cout << "in block" << endl;
if( boost::shared_ptr<A> aa = wa.lock() ) {
aa.reset(new A(2));
}
cout << "out block" << endl;
return 0;
}
0022デフォルトの名無しさん
2007/04/12(木) 19:36:15A( 1 )
in block
A( 2 )
~( 2 )
out block
~( 1 )
じゃないか?
0023デフォルトの名無しさん
2007/04/12(木) 20:32:36うへえ、キモい
0024デフォルトの名無しさん
2007/04/12(木) 21:05:050025デフォルトの名無しさん
2007/04/12(木) 23:44:370026デフォルトの名無しさん
2007/04/13(金) 00:37:030027デフォルトの名無しさん
2007/04/13(金) 01:08:14shared_ptr<Derived> dep = cur2->lock();
if(dep.get())
{
sout << "0x" << (void*)&*dep << ',';
}
使うべきだが使えない。
いつものパターンです
0028デフォルトの名無しさん
2007/04/13(金) 01:47:29{
boost::shared_ptr<A> a(new A(1));
boost::weak_ptr<A> wa(a);
cout << "org: 0x" << (void*)a.get() << endl; // org: 0x0x00033480
cout << "in block" << endl;
if( boost::shared_ptr<A> aa = wa.lock() )
{
cout << "aa: 0x" << (void*)&*aa << endl; // aa: 0x0x00033480
aa.reset(new A(2));
cout << "reseted aa: 0x" << (void*)&*aa << endl; // reseted aa: 0x0x00037118
}
cout << "out block" << endl;
return 0;
}
27氏がなにが言いたいのか分からない件について
0029デフォルトの名無しさん
2007/04/13(金) 08:23:51でもこれforでの変数宣言よりも古くかあるんだけどな……。
0030デフォルトの名無しさん
2007/04/13(金) 10:01:06詳しい条件は知らない
0031デフォルトの名無しさん
2007/04/26(木) 10:41:52それとも 1.33.1 ?
0032デフォルトの名無しさん
2007/04/26(木) 11:40:48boost/ptr_container/ptr_map.hpp
というファイルが見つからないというエラーが出てmakeにコケてしまいます。
/usr/include/boost/にboostのファイルはあるみたいなのですが、
/ptr_container/がディレクトリごと存在していません。
boostには/ptr_container/があるものとないものがあるのでしょうか?
yumでboostをインストールしたところ、
/ptr_container/は入っていたのですが、
/usr/local/include/boost/
にインストールされてしまいました。
/usr/local/include/boost/のものを/usr/include/boost/に上書きしたらまずいでしょうか?
ちなみに/usr/local/include/boost/ptr_container/だけを/usr/include/boost/
にコピーしてみたところ、別のboostのファイルの関数名と衝突?してしまいました。
boostにはいくつか種類があるのでしょうか?
boostに対してもlinuxに対してもそれほど詳しくないので質問が曖昧で申し訳ないのですが、
何かアドバイス頂けるとありがたいです。
0033デフォルトの名無しさん
2007/04/26(木) 11:49:590034デフォルトの名無しさん
2007/04/26(木) 11:54:40ptr_containerが入ったの割と最近だから
0035デフォルトの名無しさん
2007/04/26(木) 19:41:27-sTOOLSやっても変な警告でるし-sBUILDも効かないしで悩んでしまった。
0036デフォルトの名無しさん
2007/04/26(木) 20:01:05--toolset の指定で vc80 ってできない。自動判定で msvc になる。
以前ライブラリのファイル名に vc80 って入っていた部分が
vc になってるのでオートリンクで見つけられないなどなど。
Visual Studio だからかな。ほかの環境ではどう?
1.34 全然リリースされないね。
003732
2007/04/27(金) 00:43:09レスありがとうございます。
なるほどそういうこともある訳ですか。
現在も色々と追加修正されているということですね。
試しに1.33.1のソースをmakeして、元からあったboostと置き換えてみたところ、
ライブラリのmake自体にはコケたものの関数名の衝突はなくなりました。
boostについての疑問は解決しましたので後は自分で頑張ってみます。
ありがとうございました。
0038デフォルトの名無しさん
2007/04/27(金) 02:26:44--toolset=msvc-8.0
でおk
自動でバージョンが入らないのは多分バグ。
0039デフォルトの名無しさん
2007/04/27(金) 20:27:20>The first beta of what will become version 1.34.0 is now
キタ━━━━━━(゚∀゚)━━━━━━!!
0040デフォルトの名無しさん
2007/04/27(金) 21:21:110041デフォルトの名無しさん
2007/04/27(金) 22:21:56俺自分で Exepress CX つかってバイナリパッケージ作ってるんで、
次にパッケージングするときにやってみるよ。
パッケージって言っても所詮大学の研究室の学生数人で使うだけだが。
0042デフォルトの名無しさん
2007/04/28(土) 18:41:41DLLとEXEの動的初期化中にextended_type_infoの登録が複数回実行されるらしく
extended_type_info.cpp 74行目の
assert(lookup(eti) == m_self->m_map.end());
にひっかかってしまって困っています。
http://lists.boost.org/boost-users/2005/09/14096.php や
http://comments.gmane.org/gmane.comp.lib.boost.user/25434 なども同じ問題のようで
登録の重複を許すとなにやら問題が起きるらしいんですが
DLLとEXEごとにstaticなものがあちこちに分散するので重複を防ぐのは難しそうです。
boostのソースを書き換えるしかないですか?
0043デフォルトの名無しさん
2007/04/29(日) 03:14:160044デフォルトの名無しさん
2007/04/29(日) 14:05:090045デフォルトの名無しさん
2007/04/30(月) 07:55:45sf.net は CVS だけ?
0046デフォルトの名無しさん
2007/04/30(月) 12:34:08boost::tokenizerでwchar_tを使うには
<boost/tokenizer.hpp>のclass tokenizer宣言の後に
typedef tokenizer<
char_delimiters_separator<wchar_t>,
std::wstring::const_iterator,
std::wstring
> wtokenizer;
とか追加すれば良いっぽい。
と思ったけど同じようなことが数年前に個人舞炉愚に既に書いてあるな。
ノイズにしかならん。俺は馬鹿か。
0047デフォルトの名無しさん
2007/04/30(月) 13:21:390048デフォルトの名無しさん
2007/04/30(月) 16:16:24CVSだけー
次にどっから来たか書こうか
0049デフォルトの名無しさん
2007/05/01(火) 07:05:390050デフォルトの名無しさん
2007/05/02(水) 04:00:00Visutl Studio 2005 Express Edition で Boost をインストールしようとしたのですが
ワーニングがいっぱいでて1時間以上まって エラーも5個でて、
regexp の例題をコンパイルしてもエラーでだめでした。(エピステーメさんのHPの)
Boost を 2005 EE にインストールする方法を書いてあるHPがありましたが教えてください。
よろしくおねがします。
34 名前:デフォルトの名無しさん[sage] 投稿日:2006/09/26(火) 12:54:58
>>21
多分一部のlibコンパイルに失敗してる
奇遇にも昨日EEへの導入したときに同じヘマしたので俺の場合の解決手順を書いとこう
EEインスコの自動設定以外の(SDKとかへの)パスは通してない
set INCLUDE=C:\Program Files\Microsoft Platform SDK\Include
C:\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat をDOS窓に投げて実行
bjam -sTOOLS=vc-8_0 --prefix="C:\Program Files\Microsoft Visual Studio 8\VC" install
事前にDOS窓の高さバッファ9999にするとか
--prefix をわざとD:\Prog.. ってして作業内容把握できるようにすると判りやすいかも
0051デフォルトの名無しさん
2007/05/02(水) 09:00:190052デフォルトの名無しさん
2007/05/02(水) 11:13:280053デフォルトの名無しさん
2007/05/07(月) 03:12:56アプリ開発にはいらんような機能ばっかだな。
まあC++の用途を考えれば、そういうのに偏るのも分からないでもないが。
個人的にはXMLのパーサを入れてほしい。
0054デフォルトの名無しさん
2007/05/07(月) 04:28:040055デフォルトの名無しさん
2007/05/07(月) 04:58:280056デフォルトの名無しさん
2007/05/07(月) 10:26:34よく使われるような機能がないからといって、
その辺で公開されているライブラリを使おうというのであれば、boostの存在価値が薄らぐ。
0057デフォルトの名無しさん
2007/05/07(月) 16:02:280058デフォルトの名無しさん
2007/05/07(月) 16:54:000059デフォルトの名無しさん
2007/05/07(月) 19:29:54でもそのうち入るんだろうなあ
0060デフォルトの名無しさん
2007/05/07(月) 19:53:31xml_archive読んだことないから、そんなことができるかどうかは知らないが。
0061デフォルトの名無しさん
2007/05/07(月) 20:00:15同じライブラリファイルで名前にバージョンが入るのと入らないのができてしまいました。
たとえば、
boost_filesystem-vc-mt-1_34.lib と
boost_filesystem-vc-mt.lib です。
なぜ二つあるんでしょうか?
そしてどちらを使えばいいんですか?
0062デフォルトの名無しさん
2007/05/07(月) 20:04:180063デフォルトの名無しさん
2007/05/07(月) 20:14:11Windowsではシンボリックリンクが使えないので、
このように同じファイルを用意したのでしょうか?
0064デフォルトの名無しさん
2007/05/07(月) 20:16:09Jamfile読めば分かるけど少なくともNTFSではハードリンクになってるはず。
0065デフォルトの名無しさん
2007/05/07(月) 20:32:270066デフォルトの名無しさん
2007/05/07(月) 20:57:49どっちをリンクすればいいんですか?
0067デフォルトの名無しさん
2007/05/07(月) 21:10:500068デフォルトの名無しさん
2007/05/08(火) 23:20:40俺は欲しいが
0069デフォルトの名無しさん
2007/05/09(水) 00:50:400070デフォルトの名無しさん
2007/05/09(水) 01:11:430071デフォルトの名無しさん
2007/05/09(水) 02:25:570072デフォルトの名無しさん
2007/05/09(水) 23:24:42そりゃ使うやつはいるかもしれないが、準標準C++ライブラリを謳うBoostに入れる意味があるのか?
0073デフォルトの名無しさん
2007/05/09(水) 23:36:380074デフォルトの名無しさん
2007/05/09(水) 23:36:570075デフォルトの名無しさん
2007/05/09(水) 23:41:580076デフォルトの名無しさん
2007/05/10(木) 01:25:06それにDirectXにはクォタニオンのクラスが元々あるんだからそれ使うだろうし、
OpenGLにも多分あるだろうからわざわざBoostのを使う人はいないだろう。
0077デフォルトの名無しさん
2007/05/10(木) 01:29:26複素数なんかと同じ意味で「標準ライブラリ」に組み込まれるのはおかしくないと思う。
複素数だって使わない人はいるでしょ?
0078デフォルトの名無しさん
2007/05/10(木) 01:37:500079デフォルトの名無しさん
2007/05/10(木) 01:45:080080デフォルトの名無しさん
2007/05/10(木) 02:23:260081デフォルトの名無しさん
2007/05/10(木) 12:16:140082デフォルトの名無しさん
2007/05/10(木) 13:04:28まぁ、もうとっくに死んでるんだけどね。
お前ら実はシックスセンスの持ち主なんじゃないの?
0083デフォルトの名無しさん
2007/05/10(木) 13:46:140084デフォルトの名無しさん
2007/05/10(木) 14:21:270085デフォルトの名無しさん
2007/05/10(木) 14:48:05なんか面白そうな事が書いてあるから使って見たいんだが
0086デフォルトの名無しさん
2007/05/10(木) 14:57:220087デフォルトの名無しさん
2007/05/10(木) 16:29:34学校の問題でSTL使ってるのはじめてみた・・・・・orz
0088デフォルトの名無しさん
2007/05/10(木) 19:04:080089デフォルトの名無しさん
2007/05/11(金) 00:55:060090デフォルトの名無しさん
2007/05/11(金) 12:43:17どうなるんだろ
unix,win混在環境なので非常に気になる
0091デフォルトの名無しさん
2007/05/11(金) 18:11:00こういうページを見ると
東大すげえなって思う
0092デフォルトの名無しさん
2007/05/11(金) 22:05:07精神衛生上非常に好ましいな
0093デフォルトの名無しさん
2007/05/12(土) 18:31:400094デフォルトの名無しさん
2007/05/12(土) 18:39:35この俺様のソースファイルでは、名前が衝突してないよという意味だからいいだろ、別に。
0095デフォルトの名無しさん
2007/05/12(土) 19:05:29微妙にとげのある言い方だな
0096デフォルトの名無しさん
2007/05/12(土) 19:30:320097デフォルトの名無しさん
2007/05/12(土) 19:47:03using namespaceもgotoと同様に、絶対ダメなものではない。
96こそがホンモノの初心者だ。
0098デフォルトの名無しさん
2007/05/12(土) 19:53:40例外を使わざるを得ないって状況はC++やり始めた頃から結構遭遇してるけど
制約が多い環境でのプログラミングならそういうのもよくあることなのかゐ?
0099デフォルトの名無しさん
2007/05/12(土) 19:55:13という自己言及のパラドックス。
0100デフォルトの名無しさん
2007/05/12(土) 20:12:05C++だと例外があるからな。
Cだと異常処理の時に便利だよ。(マクロとコーディングルールも合わせて使うけどな)
0101デフォルトの名無しさん
2007/05/12(土) 20:12:06ただし状態遷移のプログラムの場合は堅い設計の上で意図的に使う。
問題の本質がそうであるから。
0102デフォルトの名無しさん
2007/05/12(土) 20:37:540103デフォルトの名無しさん
2007/05/12(土) 20:47:270104デフォルトの名無しさん
2007/05/12(土) 20:52:290105デフォルトの名無しさん
2007/05/12(土) 21:11:540106デフォルトの名無しさん
2007/05/12(土) 21:14:36サロゲートペアが混ざった場合にどうなるか知らんけど。
0107デフォルトの名無しさん
2007/05/12(土) 21:16:200108デフォルトの名無しさん
2007/05/12(土) 21:19:530109デフォルトの名無しさん
2007/05/12(土) 21:23:060110デフォルトの名無しさん
2007/05/12(土) 21:25:19アホ発見
0111デフォルトの名無しさん
2007/05/12(土) 22:38:410112デフォルトの名無しさん
2007/05/12(土) 23:40:42ソースで using するのは別によくね?
0113デフォルトの名無しさん
2007/05/12(土) 23:46:210114デフォルトの名無しさん
2007/05/12(土) 23:47:380115デフォルトの名無しさん
2007/05/12(土) 23:49:29なので、stdしか使ったことないな。
0116デフォルトの名無しさん
2007/05/12(土) 23:51:350117デフォルトの名無しさん
2007/05/13(日) 00:00:48エイリアス作るの?
0118デフォルトの名無しさん
2007/05/13(日) 00:04:110119デフォルトの名無しさん
2007/05/13(日) 00:11:230120デフォルトの名無しさん
2007/05/13(日) 00:29:100121デフォルトの名無しさん
2007/05/13(日) 00:47:080122デフォルトの名無しさん
2007/05/13(日) 00:49:22sexualvioletmikomikonurse::tokachitukuchite::gossungossungosunkugi(...);
なんて読みたくないだけ。
0123デフォルトの名無しさん
2007/05/13(日) 00:50:26俺は経験ないが
0124デフォルトの名無しさん
2007/05/13(日) 00:56:120125デフォルトの名無しさん
2007/05/13(日) 00:56:52真ん中のがなんだか解らなかったのが悔しい。
セクシャルバイオレットみこみこナース::とかちつくちて::ごっすんごっすん五寸釘();
0126デフォルトの名無しさん
2007/05/13(日) 01:34:50includeの後だったら影響無いのは判っているけどね……
ソース中でusingしたときのリスクってなんかあったっけ?
0127デフォルトの名無しさん
2007/05/13(日) 01:39:43実物は見たことないけど。五寸釘は知らない。
0128デフォルトの名無しさん
2007/05/13(日) 01:40:46using って using directive なのか using declaration なのかどっち?
どちらにせよ
>includeの後だったら影響無いのは判っているけどね……
はちょっと意味が分からないのでもうちょっとkwsk
0129デフォルトの名無しさん
2007/05/13(日) 01:43:08using namespace foo; は原則として使わない。
using foo::bar; は必要があれば使う。
ネームスペース全体をusingすると、先方のネームスペースの変更で名前が衝突するリスクが発生する。
0130デフォルトの名無しさん
2007/05/13(日) 01:46:46アリス・マーガトロイド
0131デフォルトの名無しさん
2007/05/13(日) 01:48:000132デフォルトの名無しさん
2007/05/13(日) 01:55:100133デフォルトの名無しさん
2007/05/13(日) 01:56:11全部分かってしまった俺は負け組み。
0134デフォルトの名無しさん
2007/05/13(日) 02:01:160135デフォルトの名無しさん
2007/05/13(日) 02:02:490136デフォルトの名無しさん
2007/05/13(日) 02:04:390137デフォルトの名無しさん
2007/05/13(日) 02:09:120138デフォルトの名無しさん
2007/05/13(日) 02:12:01みたいなのは適当にtypedefしとけって事ですか?
0139デフォルトの名無しさん
2007/05/13(日) 02:14:220140デフォルトの名無しさん
2007/05/13(日) 07:19:300141デフォルトの名無しさん
2007/05/13(日) 10:11:470142デフォルトの名無しさん
2007/05/13(日) 10:18:160143デフォルトの名無しさん
2007/05/13(日) 10:37:04DOM オブジェクトが返ってくるわけでもないんで望んでるものとは違うだろうけど、機能限定版 XML パーサーは Property Tree に入ってるはず。
Review は Accepted だけど CVS 上にはない…と思ったら、なんか今日 CVS 上にもあがったっぽい。
まだドキュメントがないらしいんで↓のレビューから辿れるところあたりを参照。
ttp://lists.boost.org/boost-announce/2006/04/0087.php
ttp://lists.boost.org/boost-announce/2006/05/0092.php
Property Tree 自体は任意の木構造状データを表現するためのライブラリで、INI とか JSON、果ては Windows レジストリとかも扱えるそうな。
0144デフォルトの名無しさん
2007/05/13(日) 11:19:30Filesystemもようやっと国際化(UTF-8/UTF-16対応)か。
Xpressiveがboostの仲間入りですな。
Xpressiveて、マルチバイトOKだったっけ?
ドキュメント斜め読みする限りは対応していなさそうな感じだったけど……
0145デフォルトの名無しさん
2007/05/13(日) 12:26:31試してないが。
0146デフォルトの名無しさん
2007/05/13(日) 13:47:05後で試してみよう。
0147デフォルトの名無しさん
2007/05/14(月) 03:53:050148デフォルトの名無しさん
2007/05/14(月) 07:40:420149デフォルトの名無しさん
2007/05/14(月) 12:41:26boost::reg_expression<char> regex = "[a-zA-Z].*[a-zA-Z]";
でerror C2262: 'regex' : 破棄できません。
というエラーが出ます
インストール失敗?
0150デフォルトの名無しさん
2007/05/14(月) 14:51:31そういうのは別のライブラリを使え、ってことじゃないかなぁ。
って、何がスタンダードなのかな。
Expat とか libxml とか?
Windows なら MSXML もあるね。
0151C2262
2007/05/14(月) 14:52:48http://msdn2.microsoft.com/en-us/library/aa983690(vs.71).aspx
The object cannot be instantiated because the appropriate destructor,
though defined, is not accessible.
The following sample generates C2262:
// C2262.cpp
class B
{
~B();
};
class D : public B {};
D d; // C2262, B's destructor is private
0152デフォルトの名無しさん
2007/05/14(月) 15:35:40代入演算子とコンストラクタの違い分かってる?
boost::regex regex("[a-zA-Z].*[a-zA-Z]");
0153デフォルトの名無しさん
2007/05/14(月) 17:23:49たまに下としても市販のライブラリを購入したことがなくて、
フリーのものばかり(代表的なものが boost)使ってきたんだけど、
市販の開発用ライブラリはどんなインストーラになってるの?
インストールすると C:\Program Files\ 以下にインストールされてしまうの?
自分で Boost を Windows にインストールするときには
C:\usr\lib とか C:\usr\include とかにライブラリのバイナリとヘッダを
置いているんだけど、Windows 的流儀ってのがあるのかな?
つーのは、1.34 も出たことだし、内輪で使うためにバイナリパッケージを
インストーラつきで作ろうと思ってるんだけど、パスをどうするかが
人それぞれで好みが違うってことが分かってデフォルトは何にしたらいいのかなって。
0154デフォルトの名無しさん
2007/05/14(月) 17:54:46Program Files\xxx\includeにヘッダ、Program Files\libにライブラリが一般的だと思う。
インクルードパスや、ライブラリパスがやたらと長くなるけど、プロジェクトに一回設定したら
実際のコマンドライン生成はIDE任せなんで気にしない。
unixでもpkgconfig使いだすと、コマンドラインで1kbyteとか行ったりするし。
0155デフォルトの名無しさん
2007/05/14(月) 18:22:54string str1("hello abc-*-ABC-*-aBc goodbye");
typedef vector< string > split_vector_type;
split_vector_type SplitVec; // #2: Search for tokens
split( SplitVec, str1, is_any_of("-*") );
// SplitVec == { "hello abc","ABC","aBc goodbye" }
// ↑これ誤り。正しくは "hellow abc", "", "", "ABC", "", "", "aBc goodbye"
// is_any_ofは正規表現的には[-*]つまり「a-*-b」は「a,,,b」のような意味
※ boost::algorithm:splitはdisplay_progressの兄貴分w
0156デフォルトの名無しさん
2007/05/14(月) 20:24:03ディレクトリ以下の include に、バイナリについては
\Program Files\lib という共通のディレクトリというわけですか。
バイナリが共通のディレクトリになっている理由は
動的リンクライブラリへのパスを一箇所にまとめるためですかね。
スペース入りのパスにいろんなものを置くのが気持ち悪くて、
Windows での流儀を知りたいと思っていました。
0157デフォルトの名無しさん
2007/05/14(月) 21:13:12変更できるようにするのが良いと思う。なお、C:\Program Filesなどのパス名はハードコードしないで
SHGetSpecialFolderPath などで取得するべし。(念のため)
0158デフォルトの名無しさん
2007/05/15(火) 06:59:15インストール先ですが、組織名ってのはとりあえず省略して、
C:\Program Files\Boost で。パス名については ExePress CX
でパッケージングすると自動的で取得してくれるようです。
シェアードオブジェクト(dll)も
C:\Program Files\Boost\lib 以下に配置すべきですかね?
それともすでにパスが通っているどこかにコピーすべきでしょうか。
しかし C:\Windows\ 以下なんぞに *.dll をコピーすると
ぶっ殺されそうな気がするので、これまた Windows の流儀ってのが
あるんでしょうか?
0159デフォルトの名無しさん
2007/05/15(火) 07:02:221.33.1 と 1.34 の Windows + VC++8 用バイナリパッケージと
ICU のバイナリパッケージは作りました。あとは
1)C:\Boost\ って Windows 的にはどうよ。
2)アンインストーラ対応にすべき?
それとも単にターゲットフォルダに展開して終わり?
3)DLL はデフォルトでパスが通ってそうなところに突っ込むべき?
0160デフォルトの名無しさん
2007/05/15(火) 10:41:54レジストリを書き換えたり、スタートメニューに挿入したりするのなら、アンインストールにも
対応するべきだし、そうでないプログラムなら単純にZIPファイルで配布するのが良いだろう。
ご存知だと思うが、標準でWindowsではZIPファイルはフォルダとして見える。
どうせプログラマしか使わないのだから、配置は任せるのが良いんじゃないかな。
0161デフォルトの名無しさん
2007/05/15(火) 11:40:19Win2kはwindowsじゃないですか、そうですか・・・
0162デフォルトの名無しさん
2007/05/15(火) 11:41:490163デフォルトの名無しさん
2007/05/15(火) 12:10:070164デフォルトの名無しさん
2007/05/15(火) 17:10:21http://homepage2.nifty.com/winfaq/w2k/hints.html#1071
0165デフォルトの名無しさん
2007/05/15(火) 17:47:540166デフォルトの名無しさん
2007/05/15(火) 17:58:240167デフォルトの名無しさん
2007/05/15(火) 18:00:57NTFS標準の圧縮フォルダならシームレスと言えるのでは。
0168デフォルトの名無しさん
2007/05/20(日) 21:18:29その書き方じゃあ、ネームスペース全体をusingしなけりゃ
その問題が起きないように読めるが、そんなことは無いだろ?
ADLあるし。まあ、程度の差はあるだろうが。
0169デフォルトの名無しさん
2007/05/21(月) 00:10:250170デフォルトの名無しさん
2007/05/21(月) 22:27:14boost::gui の話ってどうなったの?
0171デフォルトの名無しさん
2007/05/22(火) 02:58:450172デフォルトの名無しさん
2007/05/22(火) 07:22:43良い物ができたとしてもboostの入り込む余地はあるんだろか
0173デフォルトの名無しさん
2007/05/22(火) 10:20:170174デフォルトの名無しさん
2007/05/22(火) 10:43:34商売物で使うには法外な値段
0175デフォルトの名無しさん
2007/05/22(火) 12:24:480176デフォルトの名無しさん
2007/05/22(火) 16:10:41スクリプトエンジンに外注した方が楽だな
0177デフォルトの名無しさん
2007/05/22(火) 17:22:570178デフォルトの名無しさん
2007/05/22(火) 17:40:550179デフォルトの名無しさん
2007/05/22(火) 17:42:350180デフォルトの名無しさん
2007/05/22(火) 19:32:04cairo使うのが今の流れ。
0181デフォルトの名無しさん
2007/05/22(火) 22:23:340182デフォルトの名無しさん
2007/05/22(火) 22:28:020183デフォルトの名無しさん
2007/05/23(水) 13:05:03c++である必要もないんだよね
0184デフォルトの名無しさん
2007/05/23(水) 18:24:360185デフォルトの名無しさん
2007/05/23(水) 20:18:400186デフォルトの名無しさん
2007/05/23(水) 20:30:57・・・ってすでに C++ じゃないか。
0187デフォルトの名無しさん
2007/05/23(水) 22:11:11やはりC++でないと処理が追いつかないこともあるから使われるだろう。
そうでない伝票入力とか在庫管理とかのオーダーメイドアプリは
もはや完全にWebに移行している。
もっともユーザインターフェースが最新のWebでも、
データベース入出力はいまだにCOBOLが使われたりするところもあるわけだが。
0188デフォルトの名無しさん
2007/05/23(水) 22:12:290189デフォルトの名無しさん
2007/05/23(水) 22:19:220190デフォルトの名無しさん
2007/05/23(水) 22:22:120191デフォルトの名無しさん
2007/05/23(水) 23:46:49帳票とかネックになんないの?
0192デフォルトの名無しさん
2007/05/23(水) 23:48:310193デフォルトの名無しさん
2007/05/24(木) 09:36:00環境:c2d,OSX,i386,ppc(ロゼッタで確認だけ),Carbon使用
試してるboostライブラリは全てスタティック用でi386とppc(両方32bit)のユニバ
最適化はO0〜O3まで全部試してます。
regexライブラリをリンクしただけで、コード内で使わなくても2286byte〜3???byteメモリリークしちゃう
1331と1340リリース版両方で同じ状態、i386実行とロゼッタ実行でリーク量が数byte違ったり
ライブラリのO0〜O3の影響でもリーク量が変わってます、が、リンクしただけでリークするのは変わらず。
誰か修正方法知りませんか?、LeakTracerでソース位置が特定できなくて自分のレベルでは追いきれず。
(リークはするけど正規表現の動作そのものは一通り問題なかったりします、2286は固定で持ってるテーブルかなにか??)
(regex以外のビルドの要るライブラリはfilesystemくらいしか使ってませんが1331でも1340でもリーク無し)
xpressiveをOSX(Carbon使ってる状態のXcodeプロジェクトでしか試してないけど)で使うには
struct nil;とかのnilがobj-cのnilあたり?と被ってるようなので
ローカルな名前で書き換えて良さそうなnilは全部リネーム
これで"static regex"ではないregex風の方は一通り動きます、regexとほぼ同じに使えてリーク無しなのでこっち使ってます。
Let's boostさんにある"static regex"の方は
boostヘッダ側のエラーの表示された順に危なそうな変数名でローカルな物をリネームしてみていっちゃうと
compile_resultの
typedef typename compiler_type::BOOST_NESTED_TEMPLATE apply<op_type, State, Visitor>::type type;
で行き詰まりました。誰か対処方法知ってたら教えてください、高速らしいのに使えなくてしょんぼりorz
0194デフォルトの名無しさん
2007/05/24(木) 10:17:42#include <iomanip>
#include <boost/xpressive/xpressive.hpp>
の順でインクルードしておけば"static regex"いけました、無知でごめんなさい
0195デフォルトの名無しさん
2007/05/24(木) 12:54:59〜ちゃうとか、orzとか、2chだからまともな書き方しなくていいと思ったら大間違いだ。
0196デフォルトの名無しさん
2007/05/24(木) 12:58:16気に食わない奴は答えなきゃいいんだし。
0197デフォルトの名無しさん
2007/05/24(木) 13:08:51って言いたいだけだから華麗にスルーでいいよ
0198デフォルトの名無しさん
2007/05/24(木) 13:59:38なんか昔のfjみたいな堅苦しさを感じる。別に感謝されたくて返答してるわけじゃないんだし。
マルチ嫌いをスルーすりゃいいんだけど。
0199デフォルトの名無しさん
2007/05/24(木) 14:03:51その自覚がないのはもっと手に負えないな。
どうしても複数箇所に投下したいなら、
その旨を記述しておくべき。
0200デフォルトの名無しさん
2007/05/24(木) 14:43:57おまえ fj で苛められてただろw
0201デフォルトの名無しさん
2007/05/24(木) 20:02:15一つの記事を複数のグループにpostする機構があり、
ヘッダを見れば、他にどこのグループにもpostされていたか分かった。
メールのTo:のようにNewsgroups:に複数グループを記述できた。
この機構を使わず、個別にpostする行為のことをマルチポストと言ったから、
技術的に批判するだけの根拠があった。
豆知識な。
0202デフォルトの名無しさん
2007/05/24(木) 21:02:10お前、マルチがなんで嫌われるのか本質的なことを理解できてないだろ。
0203デフォルトの名無しさん
2007/05/24(木) 21:14:07まぁ自分にだけ寛大なのはお互い様ではあるが。
0204デフォルトの名無しさん
2007/05/24(木) 21:25:180205デフォルトの名無しさん
2007/05/24(木) 21:27:47電柱百本に尋ね人のポスター貼る方が効果的
0206デフォルトの名無しさん
2007/05/24(木) 21:44:380207デフォルトの名無しさん
2007/05/24(木) 21:57:08電柱一本に貼るのと電柱百本に貼るのとで、は前者の方が経済的
0208デフォルトの名無しさん
2007/05/24(木) 22:28:490209デフォルトの名無しさん
2007/05/24(木) 23:24:560210デフォルトの名無しさん
2007/05/24(木) 23:28:450211デフォルトの名無しさん
2007/05/25(金) 00:48:18せめて座りション
0212デフォルトの名無しさん
2007/05/25(金) 00:56:410213デフォルトの名無しさん
2007/05/25(金) 09:50:03wikiを作ろうと思うんですが、作ったら書き込んでくれるひといますか?
0214デフォルトの名無しさん
2007/05/25(金) 10:04:240215デフォルトの名無しさん
2007/05/25(金) 11:52:56新しく始めるより、翻訳プロジェクト進めてくれよ。
0216デフォルトの名無しさん
2007/05/25(金) 12:39:300217デフォルトの名無しさん
2007/05/25(金) 12:45:16>>1
http://boost.cppll.jp/
崩壊気味だけど。
0218デフォルトの名無しさん
2007/05/25(金) 13:19:13翻訳プロジェクトとか途中で頓挫するに決まってる
0219デフォルトの名無しさん
2007/05/25(金) 13:22:50俺の書いたprogress displayの訳なんて一行だぞ一行
0220デフォルトの名無しさん
2007/05/25(金) 13:23:470221デフォルトの名無しさん
2007/05/25(金) 15:46:530222デフォルトの名無しさん
2007/05/25(金) 16:39:17http://wikiwiki.jp/boostref/
0223デフォルトの名無しさん
2007/05/25(金) 17:09:16Boost.pythonでc++と結合
0224デフォルトの名無しさん
2007/05/25(金) 17:17:42となって振り出しに戻る。
0225デフォルトの名無しさん
2007/05/25(金) 17:19:460226デフォルトの名無しさん
2007/05/25(金) 17:20:460227デフォルトの名無しさん
2007/05/25(金) 19:06:350228デフォルトの名無しさん
2007/05/25(金) 19:48:27こっちの乗っ取りでいいじゃないかと思った
http://www.cppll.jp/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8
0229デフォルトの名無しさん
2007/05/25(金) 20:57:09今はなきCマガジンのそいつの連載を知ってるが、
無知で無教養でネタもつまらん、最低の連載だったぞ。
さらにロリ系のエロ漫画家と交友関係があって、そいつの絵をCマガジンにも載せたほどだ。
Cマガジンが廃刊になったのはこいつのせいだ。俺は絶対許せん。
0230デフォルトの名無しさん
2007/05/25(金) 21:03:00http://pc11.2ch.net/test/read.cgi/tech/1091350633/
0231デフォルトの名無しさん
2007/05/25(金) 21:14:26あーあ
また博之の名誉毀損の賠償額が増えちゃったよw
0232デフォルトの名無しさん
2007/05/25(金) 22:27:35*.cppll.jp の管理人は tietew だぞ。
0233デフォルトの名無しさん
2007/05/25(金) 23:07:43やっぱり違う?
0234デフォルトの名無しさん
2007/05/25(金) 23:13:260235デフォルトの名無しさん
2007/05/26(土) 07:49:15エロ漫画家と知り合いなのはエピステーメじゃなくフィンローダの方だぞ。
まあどっちもCマガの記事はつまらんかったが。
0236デフォルトの名無しさん
2007/05/26(土) 08:09:520237デフォルトの名無しさん
2007/05/26(土) 08:30:15今filesystemが書かれているけど
pathではなくbasic_pathにしたほうがいいと思う
0238デフォルトの名無しさん
2007/05/26(土) 08:36:280239デフォルトの名無しさん
2007/05/26(土) 08:41:250240デフォルトの名無しさん
2007/05/26(土) 08:42:56ってすまん、今名前変更に気が付いた。
0241デフォルトの名無しさん
2007/05/26(土) 08:44:05やっぱり俺にはできないようだ
0242デフォルトの名無しさん
2007/05/27(日) 01:53:30http://www.kmonos.net/alang/boost/newslog/?m=200401
0243デフォルトの名無しさん
2007/05/27(日) 23:00:04さすがにちっと古くねえか?
0244デフォルトの名無しさん
2007/05/29(火) 03:42:14lambdaに条件演算子に相当するものはありますか?
以下のようなファンクタをさくっと書く方法を知りたいです。
struct MyFunctor : public unary_function<bool, const char*>
{
const char* operator()(bool x) { return x ? "YES" : "NO"; }
}
0245デフォルトの名無しさん
2007/05/29(火) 04:12:320246244
2007/05/29(火) 11:36:460247デフォルトの名無しさん
2007/05/29(火) 20:50:28#include <iostream>
#include <deque>
#include <boost/lambda/lambda.hpp>
using namespace std;
using namespace boost::lambda;
int main ()
{
typedef deque <double> Container;
Container c0;
for (size_t i (0); i < 10; ++ i)
c0.push_front (i);
Container c1 (c0);
cout << "max: " << *max_element (c0.begin (), c0.end ()) << '\n';
for_each (c0.begin (), c0.end (), _1 /= *max_element (c0.begin (), c0.end ()));
cout << "c0: "; for_each (c0.begin (), c0.end (), (cout << _1 << ' ')); cout << '\n';
for_each (c1.begin (), c1.end (), _1 /= 9);
cout << "c1: "; for_each (c1.begin (), c1.end (), (cout << _1 << ' ')); cout << '\n';
return 0;
}
max: 9
c0: 1 8 7 6 5 4 3 2 1 0
c1: 1 0.888889 0.777778 0.666667 0.555556 0.444444 0.333333 0.222222 0.111111 0
最近lamdaを使いはじめました
c0とc1の内容が異なってくるのですがこれはしょうがないんですかね
このへんの解説ページなんかあれば教えていただけるとうれしいのですが
0248デフォルトの名無しさん
2007/05/29(火) 21:34:390249デフォルトの名無しさん
2007/05/29(火) 21:46:55/彡彡三三三ミミ彡ミ、
/彡彡へ-‐'''゙゙⌒´ヽ、ミミミヘ
{彡彡-''゙゙ U ミミヘヘ{
|彡;{ u ミミミミ
|彡i ィッァ、 ィ≡ミ、 }ミミミ
r-;;{´ ィェァ、}--{ r‐ッ-、 }‐‐;;r''´}
ヽヽ_'゙__ノ,' ',ヽ__''゙__ノ :|/::) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
`| /(、, ,, ) :::|::,.} < そろそろイキそうだ、中に出して良いかい?
ヽ', ヽ弋''‐'''フ-ノ ,::ノ ハァハァ
ヽ,、 `‐‐'''´ ,.::::::ノ
/ヽ、__ニ___ノ''゙ .⌒\
アンアン / 人 。 。 丿\ \
\ \| 亠 / / / パン
/ ̄ ̄ ̄\ \⊇ 干\ ⊆ /
i'_liノ |_|iトil_}__,l ( 。 | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|i.}┃ ┃ ミ;i|《 /⌒v⌒\ ) < 社長〜中出しして良いから次も主役お願いね♪
|lヽ'' ヮ ''' ,_) l/⌒\ ノ ) | \___________
/ | | | | パン
| |. Y | |__/ | | パン
| |ヽ__人___ノ| ト' | |/^ヽ
| | ゜ ゜ | |_/ ヽ__人_ノ
⊆, っ とーっ
〜〜〜〜〜その頃堀江ヲタは…〜〜〜〜〜〜
ほっちゃんは天使だおハァハァ シコシコ
(*´Д`) シュッ シコシコ
Σ⊂彡_,,..i'"':
|\`、: i'、
\\`_',..-i
\|_,..-┘
0250デフォルトの名無しさん
2007/05/29(火) 22:51:37なんだこれ…
lambdaはデフォルトで定数項を参照で保存するのか。
constantで回避できるけど、なんでこうなってるんだろ。
0251デフォルトの名無しさん
2007/05/30(水) 00:41:06>250
脊髄反射で全くはずれた事を書きそうになったけど、ちょい調べてみた。
↓の通り、基本的に lambda は参照ではなくてコピーした値を保持している。
ttp://www.boost.org/doc/html/lambda/using_library.html#lambda.storing_bound_arguments
が、(↑にも書いてあるけど)複合代入演算子の左辺は参照で保存される(当たり前)。
で、(多分実装の手抜きのため?)左辺と右辺で参照か値かが異なる場合が対応されていないため、
/= の右辺も(const だけど)参照で受けてしまう。
cf. lambda/detail/operators.hpp
そのため、
_1 /= *max_element (c0.begin (), c0.end ())
の代わりに
_1 = _1 / *max_element (c0.begin (), c0.end ())
とすると、結果が c1 と同じになる。
0253デフォルトの名無しさん
2007/05/30(水) 09:04:50上記のメンバ関数有るの分かってるんだから
クラスのポインタ受けとりゃいいんじゃないの
0254デフォルトの名無しさん
2007/05/30(水) 09:09:21組み込み配列を渡したくなったときのことを考えてみよう
0255デフォルトの名無しさん
2007/05/30(水) 09:50:03boost::rangeがまさにそれをやってる。
>>254
既存のコンテナの一部を渡すのもそうだな。
0256デフォルトの名無しさん
2007/05/30(水) 10:23:45オブジェクトへのポインタの間違い?
開始点と終了点を渡すiterator式のインターフェースの方がずっと汎用性がある。
例えば、途中から渡したい場合、
iteratorを持たない集合型オブジェクト上のiteratorを自前でつくる場合、
変換iteratorを使う場合など。
この辺の議論は20〜30年前に決着済みです。
0257デフォルトの名無しさん
2007/05/30(水) 10:34:58コンテナがあればイテレータふたつは簡単に手に入るし、
イテレータがふたつあればそれを仮想的なコンテナとみなせるから、
コンテナとイテレータのどっちを基準にしても汎用性は変わらないだろ。
むしろ、利便性の問題。
0258デフォルトの名無しさん
2007/05/30(水) 10:42:52> 既存のコンテナの一部を渡すのもそうだな。
などの利便性は、汎用性と言ってもいいのではないでしょうか。
0259デフォルトの名無しさん
2007/05/30(水) 11:02:560260デフォルトの名無しさん
2007/05/30(水) 11:08:070261デフォルトの名無しさん
2007/05/30(水) 16:08:43するとrangeの存在意義は?
というわけで
>>253
range_ex
0262デフォルトの名無しさん
2007/05/30(水) 17:32:06両方用意しとけばいいんだよな
0263デフォルトの名無しさん
2007/05/30(水) 18:15:040264デフォルトの名無しさん
2007/05/31(木) 01:46:460265デフォルトの名無しさん
2007/05/31(木) 06:29:430266デフォルトの名無しさん
2007/05/31(木) 07:17:250267デフォルトの名無しさん
2007/05/31(木) 13:03:43ttp://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?BoostSocket
0268デフォルトの名無しさん
2007/05/31(木) 22:08:42BidiIteratorを自分で実装すればできるっぽいのですが、よくわかりません。
誰か教えてください。
0269デフォルトの名無しさん
2007/05/31(木) 23:18:04まずはiteratorについて学ぶよろし。
0270デフォルトの名無しさん
2007/05/31(木) 23:21:52std::listなんかでよく使うので。
0271デフォルトの名無しさん
2007/05/31(木) 23:32:090272268
2007/05/31(木) 23:47:32struct node{
char c;
node *prev, *next;
}
というノード構造体のリストで構成された文字列があるとして、
これに対してboostのregexを使うにはどうすればいいのかということです。
0273268
2007/06/01(金) 00:00:330274デフォルトの名無しさん
2007/06/01(金) 00:04:480275デフォルトの名無しさん
2007/06/01(金) 00:18:45struct honya : public std::iterator<std::bidirectional_iterator_tag, char>
{
honya(const node *n = NULL) : node_ptr_(n)
{
}
// あとoperator=()もあったほうが。
honya &operator++()
{
node_ptr_ = node_ptr_->next;
return *this;
}
honya &operator--()
{
node_ptr_ = node_ptr_->prev;
return *this;
}
// 同様にoperator--(int)とoperator++(int)も定義すること。
char &operator*()
{
return node_ptr_->c;
}
// const版もいるかも。
private:
node *node_ptr_;
};
boost::regex_search(honya(&first_node), honya(&last_node), ...
0276デフォルトの名無しさん
2007/06/01(金) 00:19:48>>273
それなら、
std::list<char> l;
regex_search(l.begin(), l.end(), ...
でいけるはず。
0277268
2007/06/01(金) 00:27:11こんな長いコードまで書いていただいて恐縮です。
0278デフォルトの名無しさん
2007/06/01(金) 00:40:26Boost.Iteratorsは?
0279デフォルトの名無しさん
2007/06/01(金) 00:53:070280デフォルトの名無しさん
2007/06/01(金) 20:10:11文字列のデータ構造はイテレータさえ実装すれば自由だよ。
0281デフォルトの名無しさん
2007/06/02(土) 14:52:12boost::function<boost::uint64_t(boost::uint64_t)> f = _1 + _1;
引数のboost::uint64_tをunsinged int に変えるとコンパイルできるのですがboost::uint64_tだと
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\boost-1_33_1\boost\function\function_template.hpp(119):
error C2440: 'return' : 'boost::lambda::lambda_functor_base<Act,Args>::sig<SigArgs>::type' から 'boost::uint64_t' に変換できません。
とコンパイルエラーになってしまします。 コンパイラはvc7.1です。
0282デフォルトの名無しさん
2007/06/02(土) 21:20:26linuxだったら,
/usr/local/include
にboostおけばいいのかな
まだboostに正式にacceptされてないのは
/usr/local/share/include
あたり?
0283デフォルトの名無しさん
2007/06/02(土) 21:28:030284デフォルトの名無しさん
2007/06/02(土) 21:46:020285デフォルトの名無しさん
2007/06/03(日) 00:13:200286デフォルトの名無しさん
2007/06/03(日) 21:32:160287デフォルトの名無しさん
2007/06/05(火) 01:56:290288デフォルトの名無しさん
2007/06/06(水) 12:53:31まじで使えるの?
0289デフォルトの名無しさん
2007/06/06(水) 12:54:440290デフォルトの名無しさん
2007/06/06(水) 18:20:45いろいろあるだろ
0291デフォルトの名無しさん
2007/06/19(火) 12:06:130292デフォルトの名無しさん
2007/06/22(金) 01:59:520293デフォルトの名無しさん
2007/06/22(金) 02:37:510294デフォルトの名無しさん
2007/06/22(金) 02:55:08�d
試してみる
0295デフォルトの名無しさん
2007/06/22(金) 09:30:31boost.formatを使って、
assert(cerr << (format("value = %d") % value) << endl);
とかじゃだめなん?
0296デフォルトの名無しさん
2007/06/22(金) 19:22:42concept_checkで保障したいわけなんですが
「delete演算子の引数に出来る」ってことのconceptってありますかねぇ?
0297デフォルトの名無しさん
2007/06/22(金) 19:32:15そのためのconcept作ってやれば良いんですね(汗
0298デフォルトの名無しさん
2007/06/22(金) 19:59:060299デフォルトの名無しさん
2007/06/22(金) 20:47:340300デフォルトの名無しさん
2007/06/22(金) 21:12:200301デフォルトの名無しさん
2007/06/23(土) 15:45:180302デフォルトの名無しさん
2007/06/23(土) 21:09:17といいつつspirit使ってコンパイルエラーになると右往左往する俺
0303デフォルトの名無しさん
2007/06/26(火) 01:47:20boost::lambdaで、PODな構造体のメンバ変数へアクセスする方法はありますか?
具体的には、以下のような構造体があるときに、
struct MyPOD {
int foo;
};
以下のような感じのファンクタを書きたいのです。
_1::foo += 1
どうか宜しくご教示願います。
0304デフォルトの名無しさん
2007/06/26(火) 02:28:10bind(&MyPOD::foo, _1) += 1
0305デフォルトの名無しさん
2007/06/26(火) 02:33:26というような手もあるが、どうみてもbindの方が分かりやすいですね本当に(ry
0306デフォルトの名無しさん
2007/06/26(火) 04:26:32http://boost.cppll.jp/HEAD/libs/filesystem/doc/faq.htm#wide-character_names
みてると narow char しかサポートしないよ、へっ、って。
開発してる人に心境の変化があったの?
0307デフォルトの名無しさん
2007/06/26(火) 07:11:21そりゃいくらなんでも情報源が古すぎるわw > Revised 09 December, 2003
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1889.html
http://www.boost.org/libs/filesystem/doc/tr2_proposal.html
0308デフォルトの名無しさん
2007/06/26(火) 09:04:07おお、ありがとう。
ところで、boost::filesystem::path を使うと
Visual Studio 2005 の IntelliSense が
UnintelliSense になっちゃうんだけど、
これはどうしようもない??
IntelliSense が無いと生きていけない体になっちゃった。
0309デフォルトの名無しさん
2007/06/26(火) 09:11:320310デフォルトの名無しさん
2007/06/26(火) 09:13:02そういう時はいったん終了して*.pdbを削除して開きなおせばまた認識してくれるようになるよ
0311デフォルトの名無しさん
2007/06/26(火) 09:24:12経験上、これを消しても効果ないことが多い
で、>>309のような結論に至った
0312デフォルトの名無しさん
2007/06/26(火) 09:30:57書いたヘッダを自動的にプロジェクトに取り込むようなマクロ使えば自動化もできるし、俺も使ってみるよ
0313デフォルトの名無しさん
2007/06/26(火) 10:04:410314デフォルトの名無しさん
2007/06/26(火) 10:36:28ヤパーリ UnintelliSense ダターヨ(笑
0315デフォルトの名無しさん
2007/06/26(火) 13:30:330316デフォルトの名無しさん
2007/06/26(火) 13:36:520317デフォルトの名無しさん
2007/06/26(火) 13:43:56:
std::for_each(m.begin(), m.end(), /* */);
boost lambdaでmap各要素のsecondに定数を代入したいのですが
どのようにしたらいいのでしょうか?
vectorだったら _1 = N でいいのですが、mapだとstd::pair<const int, int>なのでどうしたらいいのかわかりません。
0318デフォルトの名無しさん
2007/06/26(火) 15:32:32これでいけるはずだけどconst intからint&に変換できないとかぬかしやがる
もし可能だとしてもconstはずしとか参照作成とか面倒そうなので
素直に関数オブジェクト自作してやった方が楽っぽい
0319デフォルトの名無しさん
2007/06/26(火) 15:49:090320デフォルトの名無しさん
2007/06/26(火) 15:57:18とりあえずこれでできるっぽい
std::for_each(m.begin(), m.end(), ( bind(&std::pair<const int,int>::second, _1) = 0 ) );
0322デフォルトの名無しさん
2007/06/26(火) 17:11:03map m;
{
using namespace boost::lambda;
using boost::for_each;
typedef const map::key_type key_type;
typedef map::mapped_type value_type;
typedef std::pair<key_type, value_type> pair;
for_each( m, bind( &pair::second, _1 ) = 0 );
}
{
class assignSecond
: std::unary_function< std::pair<const int,int>&, void > {
public:
assignSecond(int value_) : value(value_) {}
result_type operator()(argument_type arg) { arg.second = value; }
private:
int value;
};
boost::for_each(m, assignSecond(0));
}
…
typedefとか使って無理やり「処理してる部分だけは」見やすくしても
ローカル関数オブジェクトを使うのと大して変わらない手間だからなぁ(処理効率はlambdaの方がいいらしいけど)
同じ型に一連の処理をするなら最初にまとめてtypedefでもしてシンプルに記述できるかもしれんが
いまいち使いどころが分かりにくいライブラリだ…
0323デフォルトの名無しさん
2007/06/26(火) 17:56:21ちょっとだけ端折れる。
0324デフォルトの名無しさん
2007/06/26(火) 20:58:29wpath使えって事なのか?
0325デフォルトの名無しさん
2007/06/26(火) 21:07:31直接いじくることを考慮していない感じ。
0326デフォルトの名無しさん
2007/06/26(火) 21:28:210327デフォルトの名無しさん
2007/06/26(火) 22:09:53じゃいかんの?
0328デフォルトの名無しさん
2007/06/26(火) 22:25:450329デフォルトの名無しさん
2007/06/27(水) 10:10:58何か問題があるのかな?
早く使いたいんだけど、sandboxのを仕事で使うのは微妙だしなぁ。
0330デフォルトの名無しさん
2007/06/27(水) 10:15:08stlアルゴリズムを適用するもの書くんだからsandboxだからと言って避ける必要ないジャンとか思うけど
そこはややこしい内部仕様の思わぬ罠とか恐れての事なんだろうね
0331デフォルトの名無しさん
2007/06/28(木) 02:54:58//#include <boost/range.hpp>
#include <boost/range_ex/algorithm.hpp>
int main() {
enum { ARRAY_SIZE = 10 };
typedef std::valarray<int> val_array;
val_array v1( ARRAY_SIZE );
boost::fill(v1, 0);
}
みたいな具合にboost:range関係をvalarrayでも使いたいんですが
そもそもvalarray使うのが間違いってことなんでしょうか?
0332デフォルトの名無しさん
2007/06/28(木) 03:35:08明日試してみよう。今日は寝る。
0333デフォルトの名無しさん
2007/06/28(木) 17:08:54大域名前空間でいいから自分でbeginやendを定義すればいいと思う。
あとvectorみたいに要素の連続性の保証がないなら、
自前でイテレータを書いてやるのが移植性向上のためにはいいかもしれない。
0334デフォルトの名無しさん
2007/06/29(金) 20:29:45アレのお世話になるほど状態遷移が複雑になるならむしろ
専用のツール作って(あるいはExcel使うとか)そのツールからコードジェネレート
した方が早いんじゃないかと思ったりする
ひょっとして実はすごく多機能なんだろうか・・・
0335デフォルトの名無しさん
2007/06/29(金) 20:50:32valarray は要素の連続性を保証してるみたいだよ。
26.3.2.3p3
任意の型 size_t の i 及び 型 size_t の j について、
i+j が非定値の配列 a の要素数よりも小さい場合、
式 &a[i+j] == &a[i] + j は真とする。
vector も今は連続性を保証してる。
23.2.4p1 抜粋
ベクトルの要素は、連続した場所に蓄えられる。
すなわち、T を bool 以外の型とし、v を型 vector<T, Allocator> のベクトルとした場合、
0 ≦ n < v.size()) となるすべての n について、
同一性 &v[n] == &v[0] + n が成り立つ。
0336デフォルトの名無しさん
2007/06/29(金) 23:37:34(゚Д゚)ハァ?
0337デフォルトの名無しさん
2007/06/30(土) 00:00:230338デフォルトの名無しさん
2007/06/30(土) 17:42:13Boost.FSM がレビュー待ち
0339デフォルトの名無しさん
2007/06/30(土) 17:57:26有限状態機械だった
0340デフォルトの名無しさん
2007/06/30(土) 19:21:150341デフォルトの名無しさん
2007/06/30(土) 19:52:520342デフォルトの名無しさん
2007/07/01(日) 14:56:360343デフォルトの名無しさん
2007/07/01(日) 14:57:450344デフォルトの名無しさん
2007/07/01(日) 16:45:56そそって言うの止めろよ。気持ち悪い
0345デフォルトの名無しさん
2007/07/01(日) 17:50:180346デフォルトの名無しさん
2007/07/01(日) 17:54:36せめてプログラムの事で絡めよ気持ち悪い
0347デフォルトの名無しさん
2007/07/01(日) 18:20:51そもそもこれSTLコンテナのインターフェースじゃないんですよね
range関数やrangeイテレータの特殊化が組み込み型一つ一つの場合において特殊化していくような
強引なやり方でしか出来ませんでした><(といっても組み込み型に対してしか使えないから問題なさそうだけど)
0348デフォルトの名無しさん
2007/07/01(日) 20:02:260349デフォルトの名無しさん
2007/07/03(火) 01:08:170350デフォルトの名無しさん
2007/07/03(火) 21:22:260351デフォルトの名無しさん
2007/07/04(水) 00:03:090352デフォルトの名無しさん
2007/07/04(水) 00:09:570353デフォルトの名無しさん
2007/07/04(水) 02:11:29雇用形態は真逆だがな。
0354デフォルトの名無しさん
2007/07/04(水) 16:09:21日本じゃ所得に関わりなく奥さんがお弁当とどけてくれたりしないですよ
0355デフォルトの名無しさん
2007/07/04(水) 20:08:580356デフォルトの名無しさん
2007/07/04(水) 20:55:27むしろカリー化を型志向言語で体現する手法がテンプレートなんじゃないのか
0357デフォルトの名無しさん
2007/07/04(水) 22:44:35全くの見当違いですので。
0358デフォルトの名無しさん
2007/07/05(木) 00:38:36テンプレートでは引数の数は変わりません。
0359デフォルトの名無しさん
2007/07/05(木) 13:47:100360デフォルトの名無しさん
2007/07/05(木) 15:38:09>>349は全くの逆だが。
0361デフォルトの名無しさん
2007/07/05(木) 18:40:45いちいち
mat( 0, 0 ) = 1; mat( 0, 1 ) = 2; mat( 0, 2) = 3;
みたいな書き方してるとだるいし、コードが読みにくくなる・・・
Blitz++だと、
mat =
1, 2, 3,
4, 5, 6,
7, 8, 9;
みたいな書き方できるけど、イテレータがビミョーらしいしorz
> T_iterator is an iterator type. NB: this iterator is not yet fully
> implemented, and is NOT STL compatible at the present time.
0362デフォルトの名無しさん
2007/07/05(木) 18:50:261 = 2 = 3 =
4 = 5 = 6 =
7 = 8 = 9;
みたいなのは作ろうと思えば作れそうだな。
0363デフォルトの名無しさん
2007/07/05(木) 21:21:08明らかに実装不可能な = を例に出すようなおまえにゃムリだな。
0364デフォルトの名無しさん
2007/07/05(木) 21:35:22<< でいいや。
0365デフォルトの名無しさん
2007/07/05(木) 21:51:230366デフォルトの名無しさん
2007/07/05(木) 21:58:07ってできればいいんだけど
0367デフォルトの名無しさん
2007/07/06(金) 13:04:57#include <boost/numeric/ublas/vector.hpp>
#include <boost/numeric/ublas/io.hpp>
#include <iostream>
int main () {
using namespace boost::numeric;
using namespace std;
ublas::vector<double> v;
istringstream is("[3] (0.1, 2, 2)");
is >> v;
cout << v << endl;
}
$./a.out
[3](0.1,2,2)
これが一番よさそうかなぁ。
matrixでできるかどうかはわからんけど
0368デフォルトの名無しさん
2007/07/06(金) 13:23:22誰もクラス外部での話に限定してなかったけどな。
0369デフォルトの名無しさん
2007/07/06(金) 17:57:06template <class T>
class Vectorizer {
public:
typedef typename boost::numeric::ublas::vector<T>::size_type size_type;
explicit Vectorizer(size_type size) : cur_(0), vector_(size) {}
template <class T2> Vectorizer& operator&(const T2& t) {
vector_(cur_++) = t;
return *this;
}
operator boost::numeric::ublas::vector<T>() const {
return vector_;
}
private:
size_type cur_;
boost::numeric::ublas::vector<T> vector_;
};
使い方
ublas::matrix<int> m(Vectorizer<int>(3) & 0 & 1 & 2); // m = [3](0,1,2)
コピーが発生するから効率は良くない・・・RVO的なものが効くかも知れないけど
rvalue-referenceが欲しいところ
0370デフォルトの名無しさん
2007/07/06(金) 18:14:440371デフォルトの名無しさん
2007/07/07(土) 06:39:39しかも特定のライブラリ使ったときに顕著。
っていってたやつですが、using 使うと結構回避できるんですね。
boost::filesystem::path とか boost::spirit::file_iterator とか
がそれなんですが、 using boost::filesystem::path するとか
using filesystem=boost::filesystem すると IntelliSense が
効くみたい。
0372デフォルトの名無しさん
2007/07/07(土) 09:40:53へぇーやってみよ
0373デフォルトの名無しさん
2007/07/07(土) 17:38:23ttp://www.kmonos.net/pub/BoostBook/
0374デフォルトの名無しさん
2007/07/07(土) 17:44:38ttp://svn.boost.org/trac/boost/changeset/4154
一体何があった?
0375デフォルトの名無しさん
2007/07/07(土) 21:07:13おお。
あれから(初版)だいぶboostも進化したし、時代遅れになってたから
そろそろ新しく書いてくれないかと思ってたところなんだ。
これは買おう。
0376デフォルトの名無しさん
2007/07/07(土) 21:14:27shared_ptrのchecked_delete
でさえ何でこんな事してんの??
とさんざん悩んだよ
よく読むとドキュメントに書いてあったけど、書いてないものもあるし・・・
0377デフォルトの名無しさん
2007/07/07(土) 21:23:54boostを題材にModern C++みたいなことをしてくれる本
0378デフォルトの名無しさん
2007/07/07(土) 23:03:170379デフォルトの名無しさん
2007/07/07(土) 23:23:43使い方の解説はWeb上にたくさんあるけど、仕組みまで解説したところはほぼ皆無だし。
0380デフォルトの名無しさん
2007/07/07(土) 23:44:100381デフォルトの名無しさん
2007/07/07(土) 23:44:380382デフォルトの名無しさん
2007/07/07(土) 23:47:18素人向けしない仕様・思想がてんこもり
0383デフォルトの名無しさん
2007/07/08(日) 04:21:56C# とか Java とか Ruby でいいと思うよ。
C++ はどんどんマニアックになってほしい。
0384デフォルトの名無しさん
2007/07/08(日) 05:27:34秀和の本って紙が厚くない?
もちっと薄い紙にしてほしいけど単価高いのかなぁ。
0385デフォルトの名無しさん
2007/07/08(日) 06:48:21用意されているの?
0386デフォルトの名無しさん
2007/07/08(日) 07:00:420387デフォルトの名無しさん
2007/07/08(日) 07:41:18解読している時間が少なくなってしまってもったいないんだよね。
持続してblogに技術話書き続けている人って本当にすごい。
0388デフォルトの名無しさん
2007/07/08(日) 07:50:52自分のメモ程度の物でいいんじゃないの?
そういうサイトも結構役に立つんだよね、暗中模索しちゃったときとか
0389デフォルトの名無しさん
2007/07/08(日) 14:50:100390デフォルトの名無しさん
2007/07/10(火) 12:20:56気がついたらLet's Boostの内容も更新されてるな
0391デフォルトの名無しさん
2007/07/10(火) 20:59:380392デフォルトの名無しさん
2007/07/10(火) 21:28:39なんたってboostだから
0393デフォルトの名無しさん
2007/07/10(火) 21:33:020394デフォルトの名無しさん
2007/07/10(火) 21:44:040395デフォルトの名無しさん
2007/07/10(火) 22:26:130396デフォルトの名無しさん
2007/07/10(火) 22:29:260397デフォルトの名無しさん
2007/07/10(火) 22:33:590398デフォルトの名無しさん
2007/07/11(水) 00:21:52どういう理由でコピー不可になってるのですか?
0399デフォルトの名無しさん
2007/07/11(水) 00:32:250400デフォルトの名無しさん
2007/07/11(水) 00:37:260401デフォルトの名無しさん
2007/07/11(水) 00:38:52全ての要素がboost::ptr_vectorのデストラクタでdeleteされるから。
つまり管理の最適化のためにboost::ptr_vectorがすべてのオブジェクトの所有権を独占してる。
だからコピーで二重にオブジェクトを所有できたらおかしいだろ?
0402デフォルトの名無しさん
2007/07/11(水) 00:51:22ポインタだけをコピーするのがダメなら、全ての要素をnewしてコピーするという実装もアリだと思うんだが
そうしない理由もあったりするんかな?
0403デフォルトの名無しさん
2007/07/11(水) 01:10:260404デフォルトの名無しさん
2007/07/11(水) 01:16:450405デフォルトの名無しさん
2007/07/11(水) 01:39:51protected:
~Base ( ) { }
};
class Derived : public Base {
public:
~Derived ( ) { }
};
void test1( ) {
Base* p = new Derived( );
delete p; // 当然ながらコンパイルエラー
}
void test2( ) {
boost::shared_ptr<Base> p( new Derived( ) ); // コンパイルが通る
}
デストラクタがprotectedな基底クラスのポインタをdeleteすることはできないが、
shared_ptrに渡してやると何故かコンパイルが通るうえに正常にデストラクトされてるようだ。
これはどうしてなんでしょうか?
ちなみにVC++2005です。
0406デフォルトの名無しさん
2007/07/11(水) 01:43:100407デフォルトの名無しさん
2007/07/11(水) 02:04:30ありがとうございます。
ググって見たらわかり易い解説ページがありました。
http://www.zeroscape.org/cgi-bin/wiki/wiki.cgi?page=shared_ptr+minor+features
しかしこういうのを見るとやはりboostは変態的だなと思う。
0408デフォルトの名無しさん
2007/07/11(水) 09:21:29うむむ、boost::shared_ptr<void> 恐るべし。
0409デフォルトの名無しさん
2007/07/11(水) 12:20:000410デフォルトの名無しさん
2007/07/11(水) 13:04:01というか、boost 全般にわたって RTTI がつかえることが
前提として設計されているんでしょうか?
0411デフォルトの名無しさん
2007/07/11(水) 13:50:070412デフォルトの名無しさん
2007/07/11(水) 15:25:26そ、そんなぁ〜〜〜
0413デフォルトの名無しさん
2007/07/11(水) 21:56:39anyは流石にRTTIなしではまともに使えないけど。
shared_ptrやfunctionなどはRTTIなしで実装されていると思う。
例えそうでなくてもRTTIを使わない実装なんて容易に作れるし。
0414デフォルトの名無しさん
2007/07/11(水) 22:14:120415デフォルトの名無しさん
2007/07/11(水) 22:48:330416デフォルトの名無しさん
2007/07/11(水) 23:28:28そしてそれを標準化すればそれがRTTIに
0417デフォルトの名無しさん
2007/07/11(水) 23:35:000418デフォルトの名無しさん
2007/07/11(水) 23:40:19されてません。
0419デフォルトの名無しさん
2007/07/12(木) 01:11:01こうですか?わかりません><
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4595.txt
まじめな話、例外安全の観点からまずいとこがあったら教えてください。
0420デフォルトの名無しさん
2007/07/12(木) 16:58:04いりません
0421デフォルトの名無しさん
2007/07/12(木) 20:04:29struct functor_thunk_base
{
virtual void operator ()() = 0;
};
略
private:
shared_data(functor_thunk_base* deleter) : count(0), deleter(deleter) {}
~shared_data() {(*deleter)();}
unsigned count;
boost::scoped_ptr<functor_thunk_base> deleter;
ここまで見て、間違ったプログラムだと判明したので見る気なくした。
0422デフォルトの名無しさん
2007/07/12(木) 20:43:110423デフォルトの名無しさん
2007/07/12(木) 23:44:23MSVC向け条件コンパイルの理由が分かる香具師いる?
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
# define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b)
# else
# define BOOST_PP_CAT(a, b) BOOST_PP_CAT_OO((a, b))
# define BOOST_PP_CAT_OO(par) BOOST_PP_CAT_I ## par
# endif
#
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
# define BOOST_PP_CAT_I(a, b) a ## b
# else
# define BOOST_PP_CAT_I(a, b) BOOST_PP_CAT_II(a ## b)
# define BOOST_PP_CAT_II(res) res
# endif
#
# endif
0424デフォルトの名無しさん
2007/07/12(木) 23:58:400425デフォルトの名無しさん
2007/07/13(金) 00:42:16それはこっち
http://pc11.2ch.net/test/read.cgi/tech/1139266461
0426デフォルトの名無しさん
2007/07/13(金) 00:55:44条件コンパイルをしてるのはVCのプリプロセッサが腐ってるからだが、
どのように腐ってるか知りたいってこと?
0427デフォルトの名無しさん
2007/07/13(金) 01:23:57「4」と出力されるべきだが、VCだと「MYMACRO()」と出力される。
# define CAT_I(a, b) a##b
# define CAT(a, b) CAT_I(a, b)
# define STRINGIZE_I(x) #x
# define STRINGIZE(x) STRINGIZE_I(x)
# define MYMACRO() 4
# include <iostream>
int main()
{
std::cout << STRINGIZE(CAT(MY, MACRO())) << "\n";
}
0428デフォルトの名無しさん
2007/07/14(土) 00:08:10tnx.
こっちも、やみくもにいろいろやってみたが、
引数付きマクロに展開されるマクロをネストしまくると、
展開しきれたり、しきれなかったり、法則がよく分からなかった。
コメントが無いのは説明が面倒過ぎるんだろうな。
VC8でも試したが、直ってなくて萎えた。
0429デフォルトの名無しさん
2007/07/14(土) 10:33:52その振る舞いに依存しているシステム提供ヘッダが多すぎて直せない。
0430デフォルトの名無しさん
2007/07/16(月) 11:44:25じゃあせめてプリプロセッサの挙動を互換モードと標準モードで切り替えられるような
pragmaディレクティブを用意して欲しいもんだな。
0431デフォルトの名無しさん
2007/07/16(月) 11:51:260432デフォルトの名無しさん
2007/07/16(月) 12:03:02_oooo.h とか xooo.h とかがシボーンしちゃうってことでしょ
0433デフォルトの名無しさん
2007/07/16(月) 12:18:19まるでわかってないな。
0434デフォルトの名無しさん
2007/07/16(月) 12:35:48選択的に展開しないと駄目だよな。
展開時にはシステム定義、ユーザ定義が混合しているから。
0435デフォルトの名無しさん
2007/07/17(火) 00:59:05debug と static の組み合わせもビルドして大量のライブラリができるけど,どこが
間違っているでしょうか? Boost は 1.34.0 です。
./bjam --toolset=gcc --prefix=/usr/local -sBUILD="release <runtime-link>dynamic" --with-regex install
0436デフォルトの名無しさん
2007/07/17(火) 01:26:03Boost.BuildがV2になったんで-sBUILD消滅
<hoge>hageをhoge=hageにしてオプションとして渡せばおk
0437デフォルトの名無しさん
2007/07/17(火) 12:04:59ありがとうございます。
早速試してみます。
0438デフォルトの名無しさん
2007/07/17(火) 23:42:25// This uses nice VC6.5 and VC7.1 bugfeature
0439デフォルトの名無しさん
2007/07/18(水) 00:30:390440デフォルトの名無しさん
2007/07/18(水) 19:40:10MPLが他の言語で生成されたと聞いて、ちょっと興味あるのですが
0441デフォルトの名無しさん
2007/07/18(水) 20:24:37あまり意味のある質問とは思えん。
boostユーザを十把一絡げにしすぎ
0442デフォルトの名無しさん
2007/07/18(水) 20:30:07なんて大学だ、紹介してくれ
0443デフォルトの名無しさん
2007/07/18(水) 20:31:030444デフォルトの名無しさん
2007/07/18(水) 20:33:300445デフォルトの名無しさん
2007/07/19(木) 00:44:34STLportの変更箇所はSTLport-5.1.3/stlport/stl/config/user_config.hに#define _STLP_USE_BOOST_SUPPORT 1を追加しました。 ビルドは成功しました。
Boost側の変更箇所はboost_1_34_0/tools/build/v2/user-config.jamに
using stlport : :
C:/build/lib/STLport-5.1.3/stlport
C:/build/lib/STLport-5.1.3/lib ;
と追加しました。
C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.batに
@set INCLUDE=C:\build\lib\STLport-5.1.3; . . .
@set LIB=C:\build\lib\STLport-5.1.3\lib; . . .
と追加した後、実行しました。
上記を実行したコマンドプロンプトで
bjam toolset=msvc-8.0express stdlib=stlport release debug threading=multi link=static link=shared runtime-link=static runtime-link=shared --without-python stage を実行しました。
エラーメッセージは
.\boost/mpl/integral_c_tag.hpp(22) : error C2061: 構文エラー : 識別子 'value'
.\boost/mpl/integral_c_tag.hpp(22) : warning C4183: 'BOOST_STATIC_CONSTANT': 戻り値の型がありません。'int' を返すメンバ関数とみなします。
というBOOST_STATIC_CONSTANTがマクロではなく関数みたいに認識されてしまう感じのと
.\boost/type_traits/is_integral.hpp(60) : error C2039: 'ulong_long_type' : 'boost' のメンバではありません。
と型が定義されてない系のものが得られました.。
試しに以下をコンパイルしてみたのですが、こちらは成功しています。
多分パス周りの設定が間違ってるんだと思うのですが、どこを直せばいいかわかりません。 よろしくおねがいします。
#include <iostream>
#include <boost/config.hpp>
struct foge { BOOST_STATIC_CONSTANT(int, value = 0); };
int main(int ac, char** av) {
std::cout << sizeof(boost::ulong_long_type) << foge::value << std::endl; return 0;
}
0446デフォルトの名無しさん
2007/07/19(木) 08:04:05東大あたりの研究室サイトに学生向けboost解説ページがあった気がする。
授業でboost、遠くない日に来るのかも。
0447デフォルトの名無しさん
2007/07/19(木) 11:01:44なんで大変なんだろ
0448デフォルトの名無しさん
2007/07/19(木) 12:38:02わざわざ「Boostの授業」とかあったら変わってるなと思うけど。
0449デフォルトの名無しさん
2007/07/19(木) 12:39:590450デフォルトの名無しさん
2007/07/19(木) 13:32:300451デフォルトの名無しさん
2007/07/19(木) 13:44:47生ポでなくスマポを使いましょう→STLにはauto_ptrがある→でもこれは色々と駄目→
だからboost::shared_ptr、weak_ptrを使いましょう
とか授業でも使えるネタも一杯あると思いまス
0452デフォルトの名無しさん
2007/07/19(木) 19:11:080453デフォルトの名無しさん
2007/07/19(木) 19:41:260454デフォルトの名無しさん
2007/07/19(木) 20:42:02bjam --help
Important Options:
* --clean Remove targets instead of building
* -a Rebuild everything
* -n Don't execute the commands, only print them
* -d+2 Show commands as they are executed
* -d0 Supress all informational messages
* -q Stop at first error
* --debug-configuration Diagnose configuration
* --debug-building Report which targets are built with w
* --debug-generator Diagnose generator search/execution
0455デフォルトの名無しさん
2007/07/19(木) 22:33:09boost::range_iterator< BOOST_TYPEOF(vec) > iteraor;
のように(これはエラーになりますが)
エンティティーから取得した型をテンプレート引数にしたいんですが方法はありますかね?
0456デフォルトの名無しさん
2007/07/20(金) 07:54:26multi_array<double, 2> array( extents[ 5 ][ 5 ] );
multi_array<double, 2>::iterator ite = array.begin();
cout << *ite;
で配列の要素を出力できるのかと思ったら、上手くいかなかった。
これどうやって使うものなんです?
0457デフォルトの名無しさん
2007/07/20(金) 08:10:47C++初心者むけの題材としては面白いんじゃないか?
0458デフォルトの名無しさん
2007/07/20(金) 09:07:030459デフォルトの名無しさん
2007/07/20(金) 09:30:51妄想乙
0460デフォルトの名無しさん
2007/07/20(金) 13:44:320461445
2007/07/20(金) 16:48:43stlport無しだといけるみたいなのでstlport無しでいくことにしました。 ありがとうstlport、そしてさよなら
0462デフォルトの名無しさん
2007/07/20(金) 18:51:020463445
2007/07/20(金) 23:49:27ちょwwwwwwwwwwww その発想なかったwwwwwwwww 今ビルド中なのですがいけそうです
_STLP_USE_BOOST_SUPPORTなんてもっともな名前つけてあったので。。。 罠だったのかorz
0464デフォルトの名無しさん
2007/07/21(土) 00:08:440465デフォルトの名無しさん
2007/07/21(土) 19:35:410466デフォルトの名無しさん
2007/07/21(土) 20:06:160467デフォルトの名無しさん
2007/07/22(日) 00:33:120468デフォルトの名無しさん
2007/07/22(日) 18:04:070469デフォルトの名無しさん
2007/07/22(日) 18:18:390470468
2007/07/22(日) 19:56:070471デフォルトの名無しさん
2007/07/22(日) 22:25:54カウンタを同時にインクリメントするようにして
ループ内でそいつをインクリメントするのはどうだろう
0472デフォルトの名無しさん
2007/07/22(日) 22:30:45正直469案と等価
0473デフォルトの名無しさん
2007/07/22(日) 22:35:52なら手軽でシンプルな分そっちの方がいいっすね
0474デフォルトの名無しさん
2007/07/22(日) 22:37:110475デフォルトの名無しさん
2007/07/22(日) 23:03:42spirit好きだけどね・・・コンパイル重いんよね・・・
0476デフォルトの名無しさん
2007/07/22(日) 23:43:410477デフォルトの名無しさん
2007/07/23(月) 00:00:280478デフォルトの名無しさん
2007/07/23(月) 19:31:37俺も思ったけど既存のコンテナに突っ込んでsize()するよりも利点を見出せない
0479デフォルトの名無しさん
2007/07/23(月) 19:47:050480デフォルトの名無しさん
2007/07/23(月) 19:54:570481デフォルトの名無しさん
2007/07/23(月) 22:31:380482デフォルトの名無しさん
2007/07/23(月) 23:19:090484デフォルトの名無しさん
2007/07/24(火) 13:53:12filtering_ostream/filtering_ostreambufのバッファリングモードを
変更する適切な方法はありますか。
試した感じでは、デフォルトでフルバッファリングされ、
pubsetbuf(0, 0)を実行しても、バッファリングなしの動作にはならないようです。
boost::iostreams::flush()で強制フラッシュさせることは可能なようですが、
あまり美しくない気がします。
0485468
2007/07/24(火) 17:20:14xutility を include するのは推奨されないのかな。・。。
distance の実装 _Distance2 を見て少しがっかりしましたけど。。。これを使います。
0486デフォルトの名無しさん
2007/07/24(火) 19:36:08<iterator>をインクルードするのが普通。
こっちが標準ライブラリで規定されているヘッダだから。
ランダムアクセスイテレータ以外でのdistanceが
ああいう実装になるのはどうしようもない。
advance/distanceはそれを理解した上で使う存在だよ。
0487デフォルトの名無しさん
2007/07/25(水) 10:24:540488デフォルトの名無しさん
2007/07/25(水) 14:57:48・ハンカチ王子 (斎藤佑樹、野球)) ・ハニカミ王子 (石川遼、ゴルフ)
・ハナクソ王子 (平山相太、サッカー) 以上「業界三大王子」
・ポッチャリ王子 (古田幸希、ゴルフ) ・ドリブル王子 (鈴木修人、サッカー、早稲田の修ちゃん)
・筋肉王子 (長友佑都、サッカー) ・トンカチ王子 (ヴァージニア工科大学銃乱射犯、故人)
・イルハン王子 (イルハン) ・有限会社王子 (商業手形割引を中心とした総合ファイナンス会社)
・海パン王子 (小島よしお、お笑い) ・スベスベ王子 (デイブ・スペクター、お笑い)
・ウィリアム王子 (英国) ・カミカミ王子 (畠山智之、NHKアナウンサー)
・ヘンリー王子 (英国) ・監禁王子 (小林改め石島泰剛、容疑者)
・八王子 (市、東京都) ・謝罪王子 (福澤朗、フリーアナウンサー)
・広井王子 (詳細不明) ・バンダル王子 (戦闘機売却契約裏金疑惑、サウジアラビア)
・若王子 (人質、故人) ・パンダ王子 (宮本レッドブル恒靖、広告塔)
・ハコダテ王子 (藤岡佑介、騎手) ・アドリブ王子 (パチスロ漫画、あかつきけいいち・作)
・元王子 (及川光博、ミッチー) ・アジム王子 (マイケルに12億のギャラ、ブルネイ)
・ハローワーク王子(東京労働局職業安定部職業安定課、東京都北区王子、http://www.ouji.hello-work.jp/)
・はに丸王子 (はにわ、NHK) ・ニセサツ王子 (津幡勝容疑者、王子製紙社員)
・タイのハニカミ王子(アイス・サランユー、タイ歌手)
0489デフォルトの名無しさん
2007/07/25(水) 19:15:20更新点教えれ
0490デフォルトの名無しさん
2007/07/26(木) 03:47:230491デフォルトの名無しさん
2007/07/26(木) 23:40:32asioのとこだけ立ち読みしてきた
0492デフォルトの名無しさん
2007/07/27(金) 19:21:120493デフォルトの名無しさん
2007/07/27(金) 19:53:370494デフォルトの名無しさん
2007/07/27(金) 20:47:020495デフォルトの名無しさん
2007/07/28(土) 02:49:32asioを使おうとしているのですが、うまくいきません。
boost_asio_0_3_8rc3.zip
というのを公式サイトからDLしてきて、
解凍してできたboostフォルダをそのまま
boostのインストールフォルダに突っ込みました。
で、以下のコードをビルドするとエラーになります。
#include "stdafx.h"
#include <boost/asio.hpp>
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}
このコードをコンパイルしようとすると
「1>Please define _WIN32_WINNT or _WIN32_WINDOWS appropriately
1>Assuming _WIN32_WINNT=0x0500 (i.e. Windows 2000 target)」
といわれたあと、
「'.Byte' の左側はクラス、構造体、共用体でなければなりません
型は 'const u_char' です。」
といったエラーがずらずら出たので、
#define _WIN32_WINNT 0x0500
としてみたのですが、今度はPlease define _WIN32_WINNTなんたら
というのは消えたのですが、他のエラーは消えません。で、試しに
#define _WIN32_WINNT 0x0502
とするとコンパイルできました。しかし、リンク時に
0496デフォルトの名無しさん
2007/07/28(土) 02:50:321>test00.obj : error LNK2019: 未解決の外部シンボル
"public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >
__thiscall boost::system::error_code::message(void)const "
(?message@error_code@system@boost@@QBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ)
が関数 "public: virtual char const * __thiscall boost::system::system_error::what(void)const "
(?what@system_error@system@boost@@UBEPBDXZ) で参照されました。
1>C:\Users\ore\Documents\Visual Studio 2005\Projects\test00\Debug\test00.exe : fatal error LNK1120: 外部参照 1 が未解決です。」
となってしまいます。コンパイル時のコマンドラインの追加オプションには
/DBOOST_ALL_NO_LIB
をちゃんと指定しているのですが…
0497デフォルトの名無しさん
2007/07/28(土) 10:29:32ASIOと紛らわしいな
0498デフォルトの名無しさん
2007/07/28(土) 11:47:45今の今までオーディオの方だと思ってスルーしてた・・・
0499デフォルトの名無しさん
2007/07/28(土) 12:18:44warosu.
紛らわしいからそのうち改名されるかもな
asioはACEとかよりboostライクでカッコよさげだが、
機能的にはどうなんだろ
0500デフォルトの名無しさん
2007/07/28(土) 18:17:00その内その名の通りI/Oを全体に適用してく野望があるらしい
0501名無しさん@そうだ選挙に行こう
2007/07/29(日) 02:05:12おいらも
0502名無しさん@そうだ選挙に行こう
2007/07/29(日) 09:59:510503デフォルトの名無しさん
2007/08/01(水) 08:18:090504デフォルトの名無しさん
2007/08/01(水) 11:12:07同じトラブルではまった人いませんか?
[A] <-- [B] <|-- [C]
上記のようなクラス構成で、[A]と[B]でBOOST_FOREACHを使ってます。
エラーメッセージはこんな感じ。
1>C.obj : error LNK2005: "public: static bool const boost::type_traits::ice_not<0>::value" (?value@?$ice_not@$0A@@type_traits@boost@@$$Q2_NB) は既に B.obj で定義されています。
以前は[A]と[B]だけしかなかったのですが問題なく動作しており、
[C]を追加したらリンクできなくなりました。
[C]ではBOOST_FOREACHを使ってません。
ちなみに[A]と[B}のBOOST_FOREACHを削除して、
普通にイテレーターでループを回すように直すとうまく動作します。。
0505504
2007/08/01(水) 14:39:43謎だ…。
0506デフォルトの名無しさん
2007/08/01(水) 15:45:040507デフォルトの名無しさん
2007/08/01(水) 20:47:210508デフォルトの名無しさん
2007/08/01(水) 21:39:04ないね。俺は立てられなかった。
0509デフォルトの名無しさん
2007/08/01(水) 22:11:09まあこんなところにそう書いたところで、
その内誰か立ててしまうのだろうけど。
0510デフォルトの名無しさん
2007/08/02(木) 02:17:38その誰かを演じてしまった。
【C++】STL(Standard Template Library)相談室 7
http://pc11.2ch.net/test/read.cgi/tech/1185986999/
0511デフォルトの名無しさん
2007/08/02(木) 02:32:150512デフォルトの名無しさん
2007/08/02(木) 02:34:42個人的には、
C++でのTemplate metaprogrammingのスレもあってもいいんじゃないかと思ってる。
それこそ過疎りそうだけど・・・
どうなんでしょ?
0513デフォルトの名無しさん
2007/08/02(木) 07:31:59昔書いたコードがビルドできなくて、boost/thread/read_write_mutex.hppが無いって言われたから
Debianのパッケージが腐ったかと思ったよ・・・。
0514デフォルトの名無しさん
2007/08/02(木) 14:54:590515デフォルトの名無しさん
2007/08/02(木) 15:26:46過去実際に存在した
でご想像のとおり過疎ってた
(ただム板的には普通のスレ速度だったような)
0516デフォルトの名無しさん
2007/08/02(木) 16:09:27コードは以下のような感じ。ちなみにEXEではなくスタティックライブラリです。
どなたかヒントを下さい…。
コードはこんな感じ。ライブラリはマルチスレッドで/MDdオプション付けてます。
#define BOOST_LIB_NAME boost_serialization
#include <boost/config/auto_link.hpp>
#include <fstream>
#include <boost/serialization/map.hpp>
#include <boost/serialization/nvp.hpp>
#include <boost/archive/xml_oarchive.hpp>
std::map<std::string, int> MyClass::myObjects;
void MyClass::SaveToFile(const std::string &filename)
{
ofstream file(filename.c_str());
xml_oarchive oa(file);
oa << make_nvp("myObjects", myObjects);
}
0517デフォルトの名無しさん
2007/08/03(金) 20:29:01多少は協力できる人も出てくるかもしれませんよ
0518516
2007/08/03(金) 20:44:47いちおうかなり無理矢理ですができました。
どうやらboostのwindows版に標準添付されているlibファイル群は、
マネージドとアンマネージドの混在環境に対応していなかったようです。たぶん。
libファイルのプロジェクトをソリューションに追加して、/clrオプション付きでリビルドして、
元から提供されているライブラリをリンクしないように細工することでようやく動作しました。
もしかしたらもっとうまい方法があるのかもしれませんが、
ゲーム屋なのでWindowsのプログラムには慣れておらずよくわかりません。
それにしてもこのやりかたは非常に面倒ですね。
/clrオプション付きでビルドしたlibファイルも標準添付してくれると助かるのですが…。
0519デフォルトの名無しさん
2007/08/03(金) 21:53:500520516
2007/08/03(金) 22:01:30ちょこっとだけ#pragma unmanagedを使ってみた限りでは効果がありませんでした。
もし効果があったとしてもpragmaの嵐になりそうな予感。
ちなみにassertの発生箇所は、freeしているところではなく、
staticなオブジェクトがプロセス終了時にデストラクトされるように、
atexitに登録しているところでした。
ということはユーザーコード側のnew/freeのタイミング調整では回避できないということです。
素直にclrなlibを作ったほうがよさそう。
0521516
2007/08/03(金) 22:07:55>atexitに登録しているところでした。
わかりづらい説明だったのでちょっと補足。
if(NULL == m_self){
static tkmap instance;
m_self = & instance;
}
上記のコードでinstanceがプロセス終了時にデストラクトされるように、
コンパイラが内部でこっそりatexitを呼び出すコードを出力しています。
そこであぼーんしてしまうと。
ここはテンプレートではないのでインライン化されませんから、
結局pragmaでは回避できないと思います。
0522デフォルトの名無しさん
2007/08/03(金) 23:51:40boost::function<void (int,int,DWORD)>
みたいな書き方できるようになっているけど、これと同じ書き方できるようにする場合、template引数どういう風に記述すればいい?
boost::functionのソース呼んでみたけど、この書き方できないコンパイラ対策のマクロがごちゃごちゃしててよくわからなかった・・・
0523デフォルトの名無しさん
2007/08/04(土) 00:15:000524デフォルトの名無しさん
2007/08/04(土) 00:40:40boost::functionの場合は、引数の数違いで部分特殊化している。
template<typename R, typename A1, typename A2, typename Allocator>
class function<R (A1, A2)> : public functionN<R, A1, A2>
これを引数の数だけプリプロセッサで対処している。
0525デフォルトの名無しさん
2007/08/04(土) 14:07:12boost/iostreams/detail/streambuf/linked_streambuf.hppで定義されている
BOOST_IOSTREAMS_USING_PROTECTED_STREAMS_BUFFER マクロに
C++標準のbasic_streambuf<>ではpublicであるsputcがなぜか紛れ込んでいるせいで
private送りになってしまい、
boost::iostreams::stream_buffer<>でsputc()が使えないみたいなんですが、
これはバグですかね。最新のバージョンでは直ってるんでしょうか。
まあ、ヘッダのマクロを修正したら一応使えるようにはなったんですが。
0526デフォルトの名無しさん
2007/08/04(土) 19:28:13リポジトリ確認してみたら?
直ってなければ Trac へ。
0527デフォルトの名無しさん
2007/08/04(土) 20:25:26SVN見てみたら二年間全くいじられてないヘッダのようだったので
レポあげてきた。
単に誰も使ってない、のか?w
0528デフォルトの名無しさん
2007/08/05(日) 10:47:49stream_bufferを使うシチュエーションってどんなの?
0529デフォルトの名無しさん
2007/08/05(日) 23:55:23�d
しかしあのプリプロセッサの塊には本当に参った。
0530516
2007/08/06(月) 12:27:09C++/CLIでアンマネージドなオブジェクトファイルをリンクすると、
スタティック変数の初期化時にassertする問題がVC8にあり、
boostに限らずMFC等のライブラリをリンクするときもよく問題になっているようです。
そしてエントリポイントを?mainCRTStartupStrArray@@$$FYMHP$01AP$AAVString@System@@@Z
に書き換えてしまうのが一番簡単な解決策のようです。
518の方法でもたぶん大丈夫だとは思いますが、こっちのほうが簡単でしょう。
これはVCの問題ですが、同じ理由でboostが使えず困っている人も多いと思うので、
情報としてあげておきますね。
0531デフォルトの名無しさん
2007/08/06(月) 20:49:030532デフォルトの名無しさん
2007/08/06(月) 22:13:370533デフォルトの名無しさん
2007/08/06(月) 22:38:070534デフォルトの名無しさん
2007/08/06(月) 23:12:390535デフォルトの名無しさん
2007/08/06(月) 23:17:49ECMAへ提案する都合上、.NETというマイクロソフト色の強い名前を避けたのではないかな
0536デフォルトの名無しさん
2007/08/07(火) 02:40:52C土
C士
C工
C干
C牛
0537デフォルトの名無しさん
2007/08/07(火) 07:42:110538デフォルトの名無しさん
2007/08/07(火) 08:06:420539デフォルトの名無しさん
2007/08/08(水) 16:09:31本物のtypeof拡張が用意されてんのかな?
0540デフォルトの名無しさん
2007/08/08(水) 20:53:34見る限りないね。
http://msdn2.microsoft.com/en-us/library/2e6a4at9(vs.90).aspx
0541デフォルトの名無しさん
2007/08/09(木) 19:58:48すべての要素を一度に代入or初期化する関数は用意されていないのでしょうか?
//このような風に書きたい
boost::numeric::ublas::bounded_vector<double,3> v;
v.set(1,2,3);
//これはできるのですが・・・
v(0)=1;
v(1)=2;
v(2)=3;
0542デフォルトの名無しさん
2007/08/12(日) 20:07:21boost::numeric::ublas::bounded_vector<double,3> v = { 1, 2, 3 };
0543デフォルトの名無しさん
2007/08/13(月) 10:35:170544デフォルトの名無しさん
2007/08/13(月) 11:16:17C++を最近やり始めたものです
たぶんFAQだと思うのですが
stringを使おうとして
#include <string>
using namespace std;
int main(int ac, char **av)
{
string s;
sprintf(s.c_str(), "abc %d", 10);
printf(s.c_str());
return 0;
}
みたいに使おうとしてもうまくいきません。
sprintfはないのでしょうか?
0545デフォルトの名無しさん
2007/08/13(月) 11:19:350546デフォルトの名無しさん
2007/08/13(月) 11:22:510547デフォルトの名無しさん
2007/08/13(月) 11:50:07ここはboostスレ。C++初心者スレへどうぞ。
0548デフォルトの名無しさん
2007/08/13(月) 11:56:060549デフォルトの名無しさん
2007/08/13(月) 12:22:41ttp://boost.cppll.jp/HEAD/libs/format/doc/format.html
0550デフォルトの名無しさん
2007/08/13(月) 16:35:44おお!それです!!
ばっちり間に合いました!!!
ありがとうございます!!!!!
0551デフォルトの名無しさん
2007/08/13(月) 23:53:40一応、まだ標準外だがいいのか?
0552デフォルトの名無しさん
2007/08/14(火) 03:57:37boost::ptr_vector<string> fuga;
fuga.push_back(new string("hage"));
のような使い方をする場合
fugaのスコープから抜けたときに
string * が指しているオブジェクトも消去されますか?
0553デフォルトの名無しさん
2007/08/14(火) 04:11:15安心汁
0554デフォルトの名無しさん
2007/08/14(火) 04:13:340555デフォルトの名無しさん
2007/08/14(火) 11:33:510556デフォルトの名無しさん
2007/08/15(水) 16:52:27一生無いと思うけど、boostに投稿するときってどうやるの?
興味で知りたいんだけど。
0557556
2007/08/15(水) 16:55:530558デフォルトの名無しさん
2007/08/15(水) 17:05:580560デフォルトの名無しさん
2007/08/15(水) 17:23:080561デフォルトの名無しさん
2007/08/15(水) 19:17:410562デフォルトの名無しさん
2007/08/15(水) 19:43:510563デフォルトの名無しさん
2007/08/15(水) 21:25:18これを利用して、Boost をインストールしていないPCでも実行したいのですが;
VS2005 でどのようにすればスタティック・リンクできますでしょうか?
教えてください。よろしくおねがいします。
0564デフォルトの名無しさん
2007/08/15(水) 21:54:27boostのdllにパスを通さなくても動くからね。
0565デフォルトの名無しさん
2007/08/15(水) 22:07:420566デフォルトの名無しさん
2007/08/15(水) 22:49:18.libファイルをプロジェクトに手動で加えることは必要ではない。ヘッダは自動的に、
ビルドモードに適切な.libファイルを選択し、リンカにそれをインクルードするように伝える。
動的C++ランタイムを使っている時にregexライブラリに動的リンクをしたいなら,
プロジェクトをビルドする時にBOOST_REGEX_DYN_LINKを定義すればよい.
0567デフォルトの名無しさん
2007/08/15(水) 22:57:430568デフォルトの名無しさん
2007/08/17(金) 12:02:58str が boost::io のメンバじゃないって怒られてしまうのですが;
str は、ないのしょうか?
#include <boost/io/ios_state.hpp>
std::string buff;
buff = boost::io::str(
boost::format(mystr) % 10 % 0.01f % 0xff % 'a' % "sprintfみたいに使う!"
);
0569デフォルトの名無しさん
2007/08/17(金) 20:37:290570568
2007/08/17(金) 21:23:54ありがとうございます。できました。
今度は、gzip, zlib 関連のライブラリーが作成されていないんですけど;
インストール時に何か指定が必要だったのでしょうか?
0571デフォルトの名無しさん
2007/08/18(土) 14:08:250572デフォルトの名無しさん
2007/08/19(日) 00:29:40「Boost C++ Libraries プログラミング 第2版」に書いてたはずだからとにかく読んでこい
0574デフォルトの名無しさん
2007/08/19(日) 00:46:41Windowsならbzip2やzlibを使うフィルタはデフォルトで作成されないってさ
リビルドしる
0575568
2007/08/19(日) 16:18:37なるほど、、どっちにしろ zlib が別個に必要なんですね。
そこまで含めてスタティックにリンクしてくれるとうれしいんですが・・・
0576デフォルトの名無しさん
2007/08/26(日) 20:45:42これが一番典型的な例
____ progress_
|← reject| boostの中の人 display ユーザー
. ̄.|| ̄ ̄ ┗(^o^ )┳(^o^ )┳(^o^ )┛≡=-
|| ┏┗ ┗┗ ┏┗ ≡=-
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
0577デフォルトの名無しさん
2007/08/26(日) 20:59:16404なんだけど
0578デフォルトの名無しさん
2007/08/26(日) 22:22:26東京大学のヤスなんちゃらさんが卒業したか転職したか
引き抜かれたか飛ばされたかしたんじゃない?
0579デフォルトの名無しさん
2007/08/27(月) 17:16:00AirH゛なせいで夜中にwgetとかよくやる。
0580デフォルトの名無しさん
2007/08/27(月) 20:45:04vector<vector<double> > hoge;
int second_dim_length = hoge[8].size();
みたいなことをしたいのですけど。
0581デフォルトの名無しさん
2007/08/27(月) 22:27:21hoge[8].size();;
0582デフォルトの名無しさん
2007/08/28(火) 07:44:56解放されない
0583デフォルトの名無しさん
2007/08/28(火) 10:03:29thank you!
0584デフォルトの名無しさん
2007/08/28(火) 13:43:25ptr_vector だぞ。内部スマートポインタで解放されなかったらダメだろ
0585デフォルトの名無しさん
2007/08/28(火) 18:46:54あと、最後に .lib .exp を作成しだしました。 <--- これは止められないのかな?
0586デフォルトの名無しさん
2007/08/28(火) 19:04:46どこかのスレのテンプレみたいでにやっとしてしまった
0587デフォルトの名無しさん
2007/08/28(火) 20:13:42全角って何ですか?
"いわゆる全角"のことではないでしょうか。
0588デフォルトの名無しさん
2007/08/28(火) 21:08:310589デフォルトの名無しさん
2007/08/28(火) 21:12:100590デフォルトの名無しさん
2007/08/28(火) 21:39:010591デフォルトの名無しさん
2007/08/28(火) 21:42:400592デフォルトの名無しさん
2007/08/28(火) 22:03:03二倍角とかそういうのなかったっけ
0593デフォルトの名無しさん
2007/08/28(火) 22:07:41「全」は半角に対する語
なんで「角」なのかは知らない
0594デフォルトの名無しさん
2007/08/28(火) 22:17:020595デフォルトの名無しさん
2007/08/28(火) 22:33:440596デフォルトの名無しさん
2007/08/28(火) 22:53:20縦倍角や横倍角を再現する方法は、ググればわりと見付かる。
0597デフォルトの名無しさん
2007/08/28(火) 22:58:110598デフォルトの名無しさん
2007/08/28(火) 23:03:550599デフォルトの名無しさん
2007/08/29(水) 18:25:47ってSJISだと漢字や\問題がでて書き込めるけど、読み込み時にバグるんですね。。
せっかくバイナリなのに? 参った。
0600デフォルトの名無しさん
2007/08/30(木) 00:37:42AとAはやっぱり違うだろ?
0601デフォルトの名無しさん
2007/08/30(木) 00:40:180602デフォルトの名無しさん
2007/08/30(木) 00:56:140603デフォルトの名無しさん
2007/08/30(木) 02:06:21倍角の A とか4倍角の A とか、イタリック体の A とか全部違うコードだったら厭だろ?w
個人的にはフォント指定等で区別してほしかったな。今となっては手遅れだけど。
0604デフォルトの名無しさん
2007/08/30(木) 02:33:400605デフォルトの名無しさん
2007/08/30(木) 08:49:54A a
ÀÁÂÃÄÅ
ǞǟǠǡ
Ǻǻ
ȀȁȂȃ
Ά Α Α α А а
0606デフォルトの名無しさん
2007/08/30(木) 08:53:580607デフォルトの名無しさん
2007/08/30(木) 09:58:09左からいわゆる半角、ギリシア文字、キリル文字、いわゆる全角。
元々同じ文字だけど全部違うコード。
0608デフォルトの名無しさん
2007/08/30(木) 20:29:46候補一覧のひらがなの「り」のフォントが
実際に出てくる文字と違うんだけどなんで?
0609デフォルトの名無しさん
2007/08/30(木) 22:28:12文字自体は同じもの
0610デフォルトの名無しさん
2007/08/31(金) 12:29:460611デフォルトの名無しさん
2007/09/01(土) 02:55:15悲しいことにテンプレート周りのバグが修正されているようなので
ネイティブtypeofが実現できるのか気になるなあ
0612デフォルトの名無しさん
2007/09/01(土) 03:34:41意味ないか
0613デフォルトの名無しさん
2007/09/02(日) 21:05:19静的に確保されているインスタンスのポインタを渡したいときって、
どうすればいいんでしょうか?
//静的に確保されている myclass のインスタンス
//MyClass はデフォルトコンストラクタを持つ
static MyClass myclass;
//MyClass のインスタンスを shared_ptr として受け取る
void func(boost::shared_ptr<MyClass> p){
p が指す MyClass のインスタンスに関する処理
}
myclass が delete されちゃったりするのでしょうか?????
0614デフォルトの名無しさん
2007/09/02(日) 21:07:41//静的に確保されている myclass のインスタンス
//MyClass はデフォルトコンストラクタを持つ
static MyClass myclass;
//MyClass のインスタンスを shared_ptr として受け取る
void func(boost::shared_ptr<MyClass> p){
//p が指す MyClass のインスタンスに関する処理
}
int main(int argc, char** argv){
func(myclass);
return EXIT_SUCCESS;
}
0615デフォルトの名無しさん
2007/09/02(日) 21:24:10class DoNothing {
public:
void operator()(void const * x) const {return;}
};//DoNothing
みたいに何もしないファンクタを作っておいて、
DoNothing do_nothing;
int main(int argc, char** argv){
func(boost::shared_ptr<MyClass>(&myclass, do_nothing));
return EXIT_SUCCESS;
}
ってすればいいのかな?
0616デフォルトの名無しさん
2007/09/02(日) 22:44:10http://boost.cppll.jp/HEAD/libs/smart_ptr/sp_techniques.html#static
0617デフォルトの名無しさん
2007/09/03(月) 03:14:360618デフォルトの名無しさん
2007/09/03(月) 03:17:540619デフォルトの名無しさん
2007/09/03(月) 03:34:350620デフォルトの名無しさん
2007/09/03(月) 03:38:170621デフォルトの名無しさん
2007/09/03(月) 06:25:120622デフォルトの名無しさん
2007/09/03(月) 07:43:56ttp://www.emaki.minidns.net/Programming/tools/Boost/
ここと
ttp://tech.ckme.co.jp/boost.shtml
ここを参考にして解決出来ました
0623615
2007/09/03(月) 08:38:06おお、ちゃんと解説しているページがあるじゃないか・・・
何もしないファンクタくらい boost:: 名前空間内に
用意しておいてくれればいいのになぁ。
0624デフォルトの名無しさん
2007/09/03(月) 10:45:460625デフォルトの名無しさん
2007/09/03(月) 11:23:470626デフォルトの名無しさん
2007/09/03(月) 11:26:41俺も。見るたびにエンコードをEUC-JPにしてるが面倒くさいな。
0627デフォルトの名無しさん
2007/09/03(月) 11:29:56VC6だとダメみたいだけど
0628デフォルトの名無しさん
2007/09/03(月) 11:41:01HTTP bodyがEUC-JPなのに、HTTP headerはUTF-8指定なんだな。
修正して欲しいなあ。
0629デフォルトの名無しさん
2007/09/03(月) 12:25:520630デフォルトの名無しさん
2007/09/03(月) 22:28:171.34.1 のリリースアナウンスの Supported Compilers には VC6 入ってるよ?
でも regression test の wide test は failed になってるね。
http://engineering.meta-comm.com/boost-regression/1_34_1/user/filesystem_release.html
0631デフォルトの名無しさん
2007/09/03(月) 22:53:02ほんとうにありがとうございました
0632デフォルトの名無しさん
2007/09/03(月) 23:03:530633デフォルトの名無しさん
2007/09/03(月) 23:49:090634デフォルトの名無しさん
2007/09/04(火) 02:01:250635デフォルトの名無しさん
2007/09/04(火) 19:31:170636デフォルトの名無しさん
2007/09/05(水) 01:20:13namespace fs = boost::filesystem;
だと IntelliSense が働きませんが、
namespace fs { using namespace boost::filesystem;}
だと IntelliSense が働きます。
0637デフォルトの名無しさん
2007/09/05(水) 02:03:360638デフォルトの名無しさん
2007/09/05(水) 02:04:06あんっ あ
0639デフォルトの名無しさん
2007/09/06(木) 10:52:380640デフォルトの名無しさん
2007/09/06(木) 12:36:250641デフォルトの名無しさん
2007/09/06(木) 23:39:40超ありがとう
0642デフォルトの名無しさん
2007/09/10(月) 21:49:43pixel::operator[]で
pixel[0];
ってふうにアクセスするのと、
semantic_at_c<0>( pixel );
ってアクセスするのでは何が違うのかわからん。。。
わかるヒトいる?
0643デフォルトの名無しさん
2007/09/10(月) 22:16:09operator[]が動的にアドレスを計算するのに対し、
semantic_at_cのほうはオフセットが静的に展開されるという違いがあるかと。
0644デフォルトの名無しさん
2007/09/10(月) 22:38:280645デフォルトの名無しさん
2007/09/11(火) 12:30:14そこまでひねりが無いのは如何な物か?
0646デフォルトの名無しさん
2007/09/11(火) 13:45:07なるほど。サンクス。
0647デフォルトの名無しさん
2007/09/11(火) 21:29:55BOOST_AUTO(ifsb_rng,
boost::make_iterator_range( (ifsb_iterator(ifs)), ifsb_iterator() )
);
BOOST_FOREACH ( char i, ifsb_rng ) {}
というようなコードについて
>error C2440: 'return' : 'char' から 'char &' に変換できません
というエラーでコンパイル通りません@VC2005
for (ifsb_iterator i = file_rng.begin(); i != file_rng.end(); ++i) {}
のようにforループに展開すれば使えるのですが。。。
原因や解決策がわかる方、どうかお力添えをお願いします
0648デフォルトの名無しさん
2007/09/11(火) 21:53:14ovenのstream_read
0649デフォルトの名無しさん
2007/09/11(火) 21:54:130650デフォルトの名無しさん
2007/09/13(木) 00:43:35これじゃぁだめやろか?
0651デフォルトの名無しさん
2007/09/13(木) 02:03:39istreambuf_iterator<>::value_typeが参照型でないことが直接の原因だと思う。
const参照ならコンパイルできるのではないかと思った。
そこで試しにvalue_type/pointer/referenceをconst付きの型にしたアダプタを作ってみたが、
「C4172 ローカル変数またはテンポラリのアドレスを返します。」という警告になってしまった。
そういう問題ではなかったOTL。
0652デフォルトの名無しさん
2007/09/14(金) 20:37:070653デフォルトの名無しさん
2007/09/14(金) 22:20:050654デフォルトの名無しさん
2007/09/14(金) 23:36:02boost::iostreams::stream_bufferのコンストラクタとかopenとかみたいなののために
boost::iostreams名前空間全体を補完候補から捨てたくありません><
0655デフォルトの名無しさん
2007/09/15(土) 00:22:42#include <boost/lambda/lambda.hpp>
#include <boost/lambda/bind.hpp>
int main()
{
namespace bll = boost::lambda;
BOOST_AUTO(puts_, std::cout << bll::_1 << bll::constant('\n'));
puts_("text");
bll::bind(&puts_, "text"); // (*)
}
この(*)の関数オブジェクトを実行するにはどうすればいいんでしょうか?
bll::bind(&puts_, "text")();ではコンパイルエラーになってしまいますとです
0656デフォルトの名無しさん
2007/09/15(土) 00:47:37bll::bind(bll::unlambda(puts_), "text");
でどうだ?
0657デフォルトの名無しさん
2007/09/15(土) 02:14:40回答ありがとうございました
unlambda
こんなものもあるんですね・・・
もっとドキュメント熟読すべきでした
0658デフォルトの名無しさん
2007/09/16(日) 13:21:52http://www.madore.org/~david/programs/unlambda/
0659デフォルトの名無しさん
2007/09/16(日) 17:37:53ワイド文字対応があったってことは知ってるんですが。
http://www.kmonos.net/alang/boost/classes/filesystem.html
「version 1.34 で、 パス文字列として独自形式ではなく
実行環境で普通に使われる形式を扱うようになりました。」
って書いてあるんですが、native の扱いが変わったってことですか?
0660デフォルトの名無しさん
2007/09/16(日) 17:45:53thread-safeなシングルトンを作ろうとして、boost::threadを利用しようと
してたんですが、、
class Singleton
{
private:
static boost::mutex m_mutex;
static Singleton* m_p_instance;
public:
static Singleton* GetInstance() {
if (!m_p_instance) {
boost::mutex::scoped_lock guard(m_mutex); // ← (1)
if (!m_p_instance)
m_p_instance = new Singleton();
}
return m_p_instance;
}
};
(1)の時点でm_mutexのコンストラクタが呼ばれている保証がなく、
この実装は危険なものになってしまいます。
皆さんどうやってシングルトンを実現してますか?
0661659
2007/09/16(日) 17:56:20http://www.boost.org/libs/filesystem/doc/i18n.html#Simplification
Simplification of the path interface, including elimination
of distinction between native and generic formats,
and separation of name checking functionality from
general path functionality.
ということらしいので、boost::filesystem::path のコンストラクタ
に渡すときに native か portable かを指定する必要はないんですね。
う〜ん、しかしそんなことでパス文字列の分解とか正しくできるんだろうか。
0662デフォルトの名無しさん
2007/09/16(日) 18:11:530663デフォルトの名無しさん
2007/09/16(日) 20:44:54何か問題あるのか?
0664デフォルトの名無しさん
2007/09/16(日) 23:35:150665デフォルトの名無しさん
2007/09/17(月) 00:01:25何か問題あるのか?
0666デフォルトの名無しさん
2007/09/17(月) 00:46:410667デフォルトの名無しさん
2007/09/17(月) 01:56:42何か問題でもあるのか?
0668デフォルトの名無しさん
2007/09/17(月) 08:42:52機能しなくなります。Visual Studio 2008 のベータで使って
おられる方、どうですか?改善されてますか?
同じような報告が boost の ML にもあったけど、
「おめぇ、それ、boost の問題じゃないだろが、
関係ねぇメッセージ投稿してるんじゃねぇよ、禿」
って罵倒されてました。
外人オソロシス
0669デフォルトの名無しさん
2007/09/17(月) 09:03:44>「おめぇ、それ、boost の問題じゃないだろが、関係ねぇメッセージ投稿してるんじゃねぇよ、禿」
同意。
0670デフォルトの名無しさん
2007/09/17(月) 09:42:57スレ違いだろ、屑
0671デフォルトの名無しさん
2007/09/17(月) 09:43:440672デフォルトの名無しさん
2007/09/17(月) 10:08:32静的な変態ぶりじゃ俺も負けないつもりなんだが。
0673デフォルトの名無しさん
2007/09/17(月) 10:22:37動的な変態にはなるなよ。
0674デフォルトの名無しさん
2007/09/17(月) 10:23:020675デフォルトの名無しさん
2007/09/17(月) 11:06:390676デフォルトの名無しさん
2007/09/17(月) 12:33:33という意味ではないかとエスパーしてみる
0677デフォルトの名無しさん
2007/09/17(月) 12:55:44っ ttp://ja.wikipedia.org/wiki/Boost
0678デフォルトの名無しさん
2007/09/17(月) 12:56:40標準ライブラリとして取り入れられるのかと聞いているだけだろ。
0679デフォルトの名無しさん
2007/09/17(月) 13:14:00すばらしいか?
便利は便利ですが個人的にはあまり面白くないです。
0680デフォルトの名無しさん
2007/09/17(月) 13:18:500681デフォルトの名無しさん
2007/09/17(月) 13:20:260682デフォルトの名無しさん
2007/09/19(水) 10:03:49ttp://boost.cppll.jp/HEAD/libs/pool/doc/implementation/singleton.html
0683デフォルトの名無しさん
2007/09/19(水) 14:47:25やっぱりc++はVisualStudioだね
0684デフォルトの名無しさん
2007/09/19(水) 15:33:560685デフォルトの名無しさん
2007/09/19(水) 17:02:59VisualStudio2005上で
http://www.kmonos.net/alang/boost/classes/spirit.html
ここのサンプルコードをコピペしてビルドしてみたら
1>mt.exe : general error c101008a: Failed to save the updated manifest to the file ".\Debug\aho.exe.embed.manifest". Qia|?LUcfD~Y
っていうエラーが出てしまいます(末尾の文字化け部分もそのままコピペしてます)
ソースファイルの文字コードを変えたりしてみたのですがうまくいきません
どうすればこれ直りますか?
0686デフォルトの名無しさん
2007/09/19(水) 17:20:47いずれにしても、Boostの問題じゃなさそうだが。
0687デフォルトの名無しさん
2007/09/19(水) 17:33:520688デフォルトの名無しさん
2007/09/19(水) 21:54:49⊂(・∀・)つ-、<福田を押してるのは
/// /_/:::::/ <加藤紘一、山崎拓、古賀誠
|:::|/⊂ヽノ|:::| /<日本オワタ\(^o^)/
/ ̄ ̄旦 ̄ ̄ ̄/|
/______/| |
| |-----------| |
(福田総理となるとこれから想定される事態)
・南京大虐殺を認め日本の首相として正式に謝罪しますフフン
・従軍慰安婦の方々には国として手厚く賠償しますフフン
・拉致問題は解決済みですフフン
・在日韓国朝鮮人の皆さんには生活保護と年金を漏れなく支給しますフフン
・総連への税制優遇措置も再開しますフフン
・在日韓国朝鮮人の皆さんには選挙権も与えますフフン
・2000万の中国の人たちの日本への移民を認めますフフン
・人権擁護法の成立に全力を尽くしますフフン
・中国へのODAは継続し無償技術提供もしますフフン
・中国韓国朝鮮人の方々の命は地球より重いです、日本人?なにそれフフン
0689デフォルトの名無しさん
2007/09/19(水) 22:06:23ttp://www.nicovideo.jp/watch/sm1082683
0690デフォルトの名無しさん
2007/09/21(金) 06:56:44boost::regex re(sre);
string str("xxxabcd efgh-ijklm no日本語表示申能漢字pqr st uvw-xyz.");
string rep("=あ$0ほ=");
string res = boost::regex_replace(str, re, rep, boost::format_no_copy);
cerr << "sre: " << sre << endl;
cerr << "str: " << str << endl;
cerr << "rep: " << rep << endl;
cerr << "res: " << res << endl;
boost::sregex_iterator it(str.begin(), str.end(), re);
boost::sregex_iterator it_end;
for( ; it != it_end; ++it){
cerr << it->position() << ": " << it->str() << endl;
}
0691デフォルトの名無しさん
2007/09/21(金) 09:44:060692デフォルトの名無しさん
2007/09/21(金) 09:51:280693デフォルトの名無しさん
2007/09/21(金) 10:12:35がんばってテンプレートも果敢に解析してくれ!
0694デフォルトの名無しさん
2007/09/21(金) 13:06:27ここで directory_iterator についてのサンプルコード見てたら、
Note: Recursive directory iteration was added as a
convenience function after the above tutorial code was written,
so nowadays you don't have to actually code the recursion yourself.
らしいんだけど、1.34.1 での directory_iterator の使い方って
どこに載ってるの?
0695デフォルトの名無しさん
2007/09/21(金) 19:07:32foo(const boost::shared_ptr<X> x) とすればいいんでしょうか?
foo(boost::shared_ptr<const X> x) だったりしますか?
両者に違いはありますか?
0696デフォルトの名無しさん
2007/09/21(金) 19:14:21const X *をスマートにしたのがshared_ptr<const X>
X *constをスマートにしたのがconst shared_ptr<X>
0697デフォルトの名無しさん
2007/09/21(金) 19:17:25まぁ実際上は shared_ptr<const X> x でいいかな。
ともかく、ありがとうございました。
0698デフォルトの名無しさん
2007/09/21(金) 23:15:14コード読め。さもなくば
『Boost C++ Libraries プログラミング 第2版』
http://www.kmonos.net/pub/BoostBook/
でも買えば?
0699デフォルトの名無しさん
2007/09/22(土) 10:24:14vc++6.0 じゃ使えないのでしょうか?
>LINK : fatal error LNK1104: ファイル "libboost_serialization-vc6-sgd-1_34_1.lib" を開けません。
boostビルド時にエラーがボコボコ出てたんで生成されなかったみたいなのですが・・・
0700デフォルトの名無しさん
2007/09/22(土) 10:39:56これを機にvc2005に移行することをお勧めする
vc2005でもwindows95で動くものは作る事は出来るようだし
0701デフォルトの名無しさん
2007/09/22(土) 11:38:36残念
お金無いので無償版vc2005の検討してみます
0702デフォルトの名無しさん
2007/09/22(土) 20:11:28binary では、日本語を含む物は動きませんでした。
0703702
2007/09/22(土) 20:12:20Text や XML は問題ありませんでした。
私はバイナリだけが使いたかったので; がっかり
0704デフォルトの名無しさん
2007/09/22(土) 20:33:30ん? wstring とかシリアライズできない??
0705デフォルトの名無しさん
2007/09/22(土) 21:24:440706デフォルトの名無しさん
2007/09/22(土) 22:30:250707デフォルトの名無しさん
2007/09/23(日) 04:01:20なるほど、マルチバイト文字を string に入れてるとダメなのか。
漏れは数値データばっかり扱ってたから気付かなかった。
むしろ double とかが nan (signaling/quiet) のときに
xml_oarchive では出力できるのに
xml_iarchive で入力すると例外が発生するのが不便。
0708デフォルトの名無しさん
2007/09/23(日) 04:02:57名前空間が boost::details::pool::singleton_default で、
なんかディレクトリと齟齬が生じているみたいなんだけど。
boost ではシングルトン関連はあんまり重視されてない?
0709デフォルトの名無しさん
2007/09/23(日) 04:10:440710デフォルトの名無しさん
2007/09/23(日) 04:29:53・・・・・・そんなこと言ったら boost 全部そうじゃん orz
0711デフォルトの名無しさん
2007/09/23(日) 04:34:30detail以下をのぞくのは自重しる。
シングルトンは、自分用のを作るのは大変簡単だが様々な要求を満たす柔軟なのをつくるのは難し
いということで、割りにあわないから無いんだろ。古い話だがModern C++ Designのもアレだったしさ。
0712デフォルトの名無しさん
2007/09/23(日) 05:59:25boost全部singleton並に簡単じゃないので、そうじゃないよ
0713デフォルトの名無しさん
2007/09/23(日) 06:45:46シングルトンもスレッドセーフに作ろうと思うと
結構難しい気がするのだが・・・
>>711
そうか、detail 以下を覗くのはやめた方がいいのか。
-----------------------
ライブラリーで定義されているすべての開示された
シンボルは名前空間boost内にある。ライブラリーの
実装だけが使用するシンボルは名前空間
boost::details::pool内にある。
ライブラリーの実装だけが使用するヘッダーは
サブディレクトリーdetail/にある。
-----------------------
boost::detail:: ってそんな規約のもとに使われている
名前空間だったのか。全然知らんかった。
0714デフォルトの名無しさん
2007/09/23(日) 06:50:39c++0xで関数の中のstaticなオブジェクトの初期化がスレッドセーフだと明言される予定だから、簡単になるよw
あるいはそれ先取りしてるgcc4使えばいまでも簡単だ。
VC++は、2003くらいではスレッドセーフでは無かったが、2005はどうなんだろ。
0715デフォルトの名無しさん
2007/09/23(日) 07:42:15http://www.boost.org/libs/pool/doc/implementation/singleton_pool.html
一応ドキュメント化はされているみたいだから
絶対使っちゃダメってわけでもないんだろうけどね。
スレッドで気になるんだけど、スレッド関係の関数は
次の C++ 標準に入るんだったっけ?○ちスレッドな処理を
しようとするとポータブルにかけないんだよな。
0716デフォルトの名無しさん
2007/09/23(日) 09:23:33Multi-threading Library for Standard C++, 2007-06-24
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2320.html
Thread-Safety in the Standard Library (Rev 1), 2007-09-07
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2410.html
Thread-Local Storage, 2007-05-02
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2280.html
0717デフォルトの名無しさん
2007/09/23(日) 11:07:10set PYTHON_ROOT="C:\Program Files\python"
set PYTHON_VERSION=2.5
.\bjam --toolset=msvc --PYTHON_ROOT="C:\Program Files\python install
でuser-config.jamに
import toolset : using ;
using python ;
入れたんだけどpythonの場所が分からないとほえます
どうしたらいいんですか?
0718デフォルトの名無しさん
2007/09/23(日) 11:49:150719デフォルトの名無しさん
2007/09/23(日) 12:41:530720デフォルトの名無しさん
2007/09/23(日) 13:03:49息子が孫のクチか?
0721デフォルトの名無しさん
2007/09/23(日) 13:13:520722デフォルトの名無しさん
2007/09/23(日) 14:58:00>>495-496
と同じ症状が出てるんですけど
解決策分かるかたいらっしゃいますか?
VC2005ExpressEditionです
0723デフォルトの名無しさん
2007/09/23(日) 16:31:060724デフォルトの名無しさん
2007/09/23(日) 18:17:51>>722
2005スタンダードで通ったよ
外部参照云々はライブラリをちゃんと指定すれば動くんじゃね?
0725デフォルトの名無しさん
2007/09/24(月) 11:23:03環境はwindowsXP + cygwin, シェルはzsh、文字コードeucjpで
$BOOST_ROOT/tools/boostbook/setup_boostbook.shを実行
$BOOST_ROOT/tools/quickbook/にてbjam --v2でquickbookを$BOOST_ROOT/dist/binに作成
$HOME/user-config.jamに
using quickbook : /usr/src/boost/dist/bin/quickbook ; を書き加える
以上の操作の後
$BOOST_ROOT/tools/boostbook/docでbjam --v2でxslt-xsltprocで失敗
いやぁライブラリのビルドとは桁違いの難しさです
0726デフォルトの名無しさん
2007/09/24(月) 17:31:590727デフォルトの名無しさん
2007/09/24(月) 20:17:45絶対パスに含まれる:(コロン)が%3Aなどと化けているのが原因の一つのようだ
ちなみにcygwinのxsltprocだと/も化ける(笑)
下手するとxsltprocのソース弄ってビルドしなおさないと駄目かもしれんね
流石にそこまでできる気力はないが
Linuxなら同様の手順で難なくビルドできたんで、そこから持ってくることにしますか
しかしcppllで翻訳して"た"人達は同じような環境でうまくできてたんですよね…
なんか悔しいですわ
0728デフォルトの名無しさん
2007/09/25(火) 00:18:11普通にvmware + ubuntu Linuxでbuild&compileしてます。> Boost最新
0729デフォルトの名無しさん
2007/09/25(火) 00:19:410730デフォルトの名無しさん
2007/09/25(火) 04:40:53gccは結構駄目みたいけど、他では通りにくいのが通ったりと面白い結果になってる
icc10はどれぐらい対応してるんだろうかが気になる
0731デフォルトの名無しさん
2007/09/25(火) 19:26:30VC8 win 9 fails
icc9 Linux 14fails
gcc4.1 Linux 12fails
icc9よりgcc4.1の方がマシになってね?
やっぱり最強はVC8だけど。
0732722
2007/09/26(水) 06:27:23ありがとうございます。
とりあえず使えるようになったのですが、
include する順番が違うだけで >>495-496 になってしまうようです。
//↓コンパイル通らない
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <boost/format.hpp>
#include <boost/date_time/gregorian/gregorian.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/date_time/local_time_adjustor.hpp>
#include <boost/date_time/c_local_time_adjustor.hpp>
#include <boost/asio.hpp> //←ここにあるとだめ
//↓コンパイル通った
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <boost/format.hpp>
#include <boost/asio.hpp> //←ここなら動く
#include <boost/date_time/gregorian/gregorian.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/date_time/local_time_adjustor.hpp>
#include <boost/date_time/c_local_time_adjustor.hpp>
以上ご報告まで
0733デフォルトの名無しさん
2007/09/26(水) 07:50:27扱えるのは便利だけど、これからは URI や IRI も
扱う場面が増えてくるんじゃないかな?
URI や IRI を扱うために便利なポータブルなライブラリって
あります?
0734デフォルトの名無しさん
2007/09/26(水) 08:27:49ウソ
0735デフォルトの名無しさん
2007/09/26(水) 08:31:050736デフォルトの名無しさん
2007/09/26(水) 10:14:42vc8環境下でICU3.8をビルドしてboost.regexで使うようにすると
icui18n.libとかicudata.libが無いっておこられる
そこでicuin.libとicuind.libをicui18n.lib icui18nd.libに、
icudt.libをicudata.libにコピー&リネームすると通る
regexのテストは一応全通過
本来はどうするべきなんだろうか…
0737デフォルトの名無しさん
2007/09/26(水) 16:14:17昨日は C++ の標準には入らないとおもうんだけど、どう?
0738デフォルトの名無しさん
2007/09/26(水) 16:17:25他のライブラリを必要とするかどうかは実装の問題だから標準云々にはとりあえず関係ないと思う
0739デフォルトの名無しさん
2007/09/26(水) 17:54:170740デフォルトの名無しさん
2007/09/26(水) 19:49:500741デフォルトの名無しさん
2007/09/26(水) 23:57:310742デフォルトの名無しさん
2007/09/27(木) 06:39:39Boost::Python python(pythoncode);
cout << phthon;
0743デフォルトの名無しさん
2007/09/27(木) 19:07:07import myrule ;
みたいに書きたいんだけど、moduleの検索パスをどうやって追加するかがわからないので
とりあえず確実に検索されてるなというパス
$BOOST_BUILD_PATHと$BOOST_BUILD_PATH/utilに放り込むという方法しかとれないのが悔しい…でも(ry
0744デフォルトの名無しさん
2007/09/27(木) 23:57:340745デフォルトの名無しさん
2007/09/28(金) 00:49:210746デフォルトの名無しさん
2007/09/30(日) 18:16:00便利にならないかなぁ。たとえばオプションの一覧を
何らかのマクロで与えれば、それを解析する
boost::program_options::options_description の
インスタンスが自動的に生成されて、なおかつ
コマンドラインオプションの解析結果を保持する
シングルトンも自動的に生成されるとか。
0747デフォルトの名無しさん
2007/09/30(日) 20:22:24ちょっとだけ使ってみたけど、何だかコードが長ったらしくなってしまい、
古典的なgetopt()を使ったコードに比べてそんなにいいとも思わなかった俺は
老害と言えよう。
0748デフォルトの名無しさん
2007/09/30(日) 20:26:01を、std::cout << dc; したときの出力速度がやったら遅い気がする。
のが気になった。
0749デフォルトの名無しさん
2007/09/30(日) 21:43:13出現しても例外を出さずに単に無視するだけにしてほしいんだけど、
そういうことはできないのかな?
0750デフォルトの名無しさん
2007/09/30(日) 22:06:370751デフォルトの名無しさん
2007/09/30(日) 22:18:24。。。。。面倒すぎる・・・
catch してやりすごそう・・・
と思ったけど catch しちゃったら
途中でパース投げ出してるじゃん!
0752デフォルトの名無しさん
2007/09/30(日) 22:19:52そうそうw
抜けちゃうんだよね。
0753デフォルトの名無しさん
2007/09/30(日) 22:25:20実際は、もうすこし条件があるんじゃないですか?
私はたとえば、
./program -a -b -c executable_name -d -e -f
で、executable_name が登場した後の -d -e -f は executable_name へのオプションだか
ら、program_optionsライブラリにはスルーさせたいと思ったことがあって、それならごく簡単
なextra_parser (ちょっとした文字列比較のみ) でどうにかなりました。
0754デフォルトの名無しさん
2007/10/01(月) 00:02:52boost::function<int hoge(int a, int b)> f;
みたいなやつです。
0755デフォルトの名無しさん
2007/10/01(月) 00:20:56function<R ()>は
function0<R>を継承するよう部分特殊化。
function<R (T1)>は
function1<R, T1>を継承するよう部分特殊化。
function<R (T1, T2)>は
function2<R, T1, T2>を継承するよう部分特殊化。
以下function10になるまで繰り返し。
たぶんこんな感じ。
0756デフォルトの名無しさん
2007/10/01(月) 00:57:22ありがとう。
0757デフォルトの名無しさん
2007/10/01(月) 01:28:26エラーになってしまうんですが、どうしたらいいでしょうか。
0758デフォルトの名無しさん
2007/10/01(月) 01:46:57BOOST_STATIC_ASSERT(boost::is_same<U BOOST_PP_COMMA( ) double>::value);
0759758
2007/10/01(月) 01:51:51#include <boost/preprocessor/comma.hpp>
0760デフォルトの名無しさん
2007/10/01(月) 01:57:160761デフォルトの名無しさん
2007/10/01(月) 01:57:52プリプロセッサは::を扱えないから仕方ない
0762デフォルトの名無しさん
2007/10/01(月) 02:10:38ここでうまく扱えてないのは :: じゃなくて <> の引数リストね。
0763デフォルトの名無しさん
2007/10/01(月) 02:14:13イイ!
0764デフォルトの名無しさん
2007/10/01(月) 02:38:05http://pc11.2ch.net/test/read.cgi/tech/1190745673/109n
あっちのスレで。
0765デフォルトの名無しさん
2007/10/01(月) 02:45:38普通に間違えて書いてた・・訂正thx
0766764
2007/10/01(月) 04:14:27typedef boost::mpl::list<
boost::mpl::lambda<
boost::is_same< // equal_toのほうがいいのかな
boost::mpl::_1,
boost::mpl::int_<0>
>
>::type,
boost::mpl::lambda<
boost::is_same<
boost::mpl::_1,
boost::mpl::int_<1>
>
>::type
> cond_list;
みたいなリストに対して、(つづく)
0767764
2007/10/01(月) 04:15:09template<int V>
static void XXX(typename boost::disable_if<
boost::mpl::or_<
boost::mpl::bool_<false>, // initial value
boost::mpl::or_<
boost::mpl::at_c<cond_list, 0>::type::apply<boost::mpl::int_<V> >,
boost::mpl::at_c<cond_list, 1>::type::apply<boost::mpl::int_<V> >
>
>
>::type* = 0) {
std::printf("default\n");
}
みたいな関数を書きました。cond_listの全要素に対してapplyしてor_してます。
このXXX()を、boost::mpl::foldを使って書き直したいんですが、
第三パラメタ fold<cond_list, boost::mpl::bool_<false>, ここ> はどう書いたもんでしょうか。
0768デフォルトの名無しさん
2007/10/01(月) 06:07:24template<bool B, int V1, int V2>
struct hoge {}
を用意して、lambda<hoge, _1, _2, V>しとく
0769デフォルトの名無しさん
2007/10/01(月) 06:54:53#include <cassert> の assert() マクロに比べて
何が嬉しいの?
0770デフォルトの名無しさん
2007/10/01(月) 07:05:56static assertはコンパイル時に失敗する
失敗がはやければ立ちなおれるかもしれないだろ?
0771デフォルトの名無しさん
2007/10/01(月) 07:22:52ttp://www.boost.org/doc/html/program_options/howto.html#id1593176
0772デフォルトの名無しさん
2007/10/01(月) 07:25:53sizeof のチェックとかに使うことが多いのかな?
あんまり使い道思いつかないんだけど。
0773デフォルトの名無しさん
2007/10/01(月) 09:19:09素で言ってるのか?
template ってコンパイル時にしか使えないから使い道思いつかないって
言ってるのと同じだぞ
0774デフォルトの名無しさん
2007/10/01(月) 09:24:590775デフォルトの名無しさん
2007/10/01(月) 10:21:11ええ〜テンプレートは使いまくりだけどさ、
マジで BOOST_STATIC_ASSERT が便利に
使える場面ってのがよくわかんなくって。
あほな俺になんか実例紹介してくれ。
0776デフォルトの名無しさん
2007/10/01(月) 10:35:26BOOST_STATIC_ASSERT( is_xxx< X >::value );
みたいにtype_traitsとの組みあわせで使われてるのが多いようだ
0777デフォルトの名無しさん
2007/10/01(月) 19:20:100778デフォルトの名無しさん
2007/10/02(火) 04:13:07mplとか使わないならconcept checkで大体用は足りるかも。
0779デフォルトの名無しさん
2007/10/02(火) 10:49:53って俺が使ってる VC++8 についてくる STL のことしか
知らないんだけどさ。
SGI のやつとかはコンセプトチェックしてくれるの?
0780780
2007/10/02(火) 11:08:490781デフォルトの名無しさん
2007/10/02(火) 11:59:29いままで、エラーの流れとデータの流れは分離せよ、
という自戒から意味のある値を返せない時は例外を
投げてたんだけど、「意味のある値が返せない」
ってことを返せるんだよね・・・
同様のケースでは今まで NULL ポインタかえしたり、
たとえば 0 より大きな値をとることが分かっている
関数が 0 を返すことでエラーと見なしたりしていて、
自分はそういうの気持ち悪いなぁ、って思ってたんだけど、
なんかその自戒が崩壊していきそうだ。
0782デフォルトの名無しさん
2007/10/02(火) 12:16:080783デフォルトの名無しさん
2007/10/02(火) 12:24:48--
template<typename IterT, typename ValueT>
void print_unique_values_in_sorted_sequence(IterT begin, IterrT end)
{
boost::optional<ValueT> lastValue;
for (IteratorType i = begin; i != end; ++i) {
if (! (lastValue && *i == *lastValue))
std::cout << *i << std::endl;
lastValue = *i;
}
}
--
値保持変数と有効フラグ変数を持ち回る必要がなくなるじゃぁないか。
0784デフォルトの名無しさん
2007/10/02(火) 12:33:14boost にはたいていあるよな。で、自前で作ってた
のよりもはるかによく考えられて設計&実装されてる。
俺って不要なんじゃね?
今頃気づいた。
0785デフォルトの名無しさん
2007/10/02(火) 12:39:27何を言う。boostは部品だ。つまり君は、部品をどう組み立てるかに専念すればいいということだ。
0786デフォルトの名無しさん
2007/10/02(火) 12:45:33カーチャン
0787デフォルトの名無しさん
2007/10/02(火) 12:47:49_,,‐─-v‐、,,、
,,-‐'": : : : : : : : : : `ヽ
/: : : : : : : ,,__ : : : : : : \
r': ,、,,.-─''"゛ ミ : : : : : : : 'i、
`/ / ミ_ : : : : : : :,、}
i l _,,..-‐^‐-、 `゙i: : : /l.l|
i、}‐-、 ヽ;;/,rェッ;;'" ゙ー' 9iリ!
| ',tテi ヽ='" ゞ t'
| 'i"´| , -、 ヽ-、,,___
| '}、 !,,tu'" ヽ、 ,l: ‐-‐" }: : : : :
} lヽ、__,,,.-‐ヽ /: : : : : : /|: : : : :
,r/ /: : :ヽー‐' ノ: : : : : : : / .|: : : : :
/: \ /: : : : : 丶,, -''_: : : : : : / |: : : : :
/: : : : :ヽ/: : : : : : : ヾ''‐--‐ヽ |: : : : :
/: : : : : : : : : : : : : : : : : : ヽ\: : / |: : : : :
ブーツ=デ=ヤーレ[Buits De Yale]
(1955〜 フランス)
0788デフォルトの名無しさん
2007/10/02(火) 13:20:03*使ってうまくセットにしたって感じだよね。
多値好きな俺には堪えられない。
0789デフォルトの名無しさん
2007/10/02(火) 13:52:12それが吐き出したデータも、データを利用する部署も、世の中は全て部品だ。
そして784の作る部品よりも全て別の人が作った部品の方がよく考えられて設計、実装されているならば、
784は不要な存在であると言える。
どうでもいいけど>>787の元ネタってアーサー・ケストラーだっけ?
0790デフォルトの名無しさん
2007/10/02(火) 16:07:10なんかマ板じゃないけど愚痴っちゃうけど。
いくら努力したって頂点付近にいる人間にはなれないわけよ
そんな中で俺の存在意義って見出せないんだよなー
とか思ってもう5年。
0791デフォルトの名無しさん
2007/10/02(火) 16:11:42割と誰でも頂点に行ける世界だよ。
0792デフォルトの名無しさん
2007/10/02(火) 16:34:03無限ループktkr
0793783
2007/10/02(火) 17:07:57どうせなら引き数はrangeにして欲しかったような希ガス。
--
template<typename Range, typename Value>
void print_unique_values_in_sorted_sequence(Range & r)
{
boost::optional<Value> lastValue;
boost:range_iterator<Range>::type i = begin(r), e = end(r);
for (; i != e; ++i) {
if (! (lastValue && *i == *lastValue))
std::cout << *i << std::endl;
lastValue = *i;
}
}
--
帰ったら試してみよ。
0794デフォルトの名無しさん
2007/10/02(火) 22:53:55どんな天才も、お前の代わりにトイレには行けないんだよ!
0795デフォルトの名無しさん
2007/10/02(火) 23:18:56ならboost/threadってどういうこと?
0796デフォルトの名無しさん
2007/10/02(火) 23:21:060797デフォルトの名無しさん
2007/10/02(火) 23:22:030798デフォルトの名無しさん
2007/10/02(火) 23:30:100799デフォルトの名無しさん
2007/10/02(火) 23:33:47Windows APIを使った実装とpthreadを使った実装を用意して、
環境次第でどっち使うかが切り替わるようになっている。
もちろん、どっちも使えない環境ではアウト。
0800デフォルトの名無しさん
2007/10/02(火) 23:48:39それは逆だと思うね
天才のミス(バグ)を凡人が修正できるのはプログラミングの分野だけだ
0801デフォルトの名無しさん
2007/10/02(火) 23:58:590802デフォルトの名無しさん
2007/10/03(水) 00:00:48ひどすぎる
・IterT を IteratorType と書きミス
・ValueT を iterator_traits<> から求めず、なぜかテンプレート引数で受け取っている
・ループの最初で IterT last = begin とし、++begin からループすれば
毎フレーム lastValue をチェックする必要は無いし、ValueT も不要にできる
・そもそも boost::optional<> 使う必要が無い
・std::unique_copy と std::ostream_iterator を使え
0803デフォルトの名無しさん
2007/10/03(水) 00:09:19なんだそのうまい事いったな的なセリフは。
0804デフォルトの名無しさん
2007/10/03(水) 00:10:27作者のうちの一人は変な言語作って、OOTLすら更新止まってるし…
今のところはboost MLでjoelさんがマクロベースIDLにケチ付けたときに示した方法でやってるけど
あの方法もメソッドの型をいちいちインタフェースとは別に定義しなきゃならんから
二度手間になって、マクロベースIDLと同じくらいダサいし…
なんかインターフェース定義の決定版みたいなものはないのかのぅ
0805デフォルトの名無しさん
2007/10/03(水) 03:14:370806デフォルトの名無しさん
2007/10/03(水) 03:45:59仮想関数と比べて
どの程度のメリットがあるの?
0807デフォルトの名無しさん
2007/10/03(水) 05:28:48Visual Studio 2005 の IntelliSense がないと作業効率半減。
ほかの IDE といえば emacs (IDEか?) と Eclipse CDT しか
使ったことないんだけど、補完機能に優れているものって
Visual C++ のほかになにか候補ある?
boost ってテンプレート多用のせいか IntelliSense が
混乱してだんまり決め込むことも多いんだけど、最近
IntelliSense を混乱させる原因がわかってきたんで
boost のヘッダファイルを書き換えて(といっても
セマンティックスは等価な別の書き方にしてるだけ)
IntelliSense friendly な boost を作成中。
0808デフォルトの名無しさん
2007/10/03(水) 08:31:55というか、スレッドライブラリの使い方について
日本語での説明ってないかなぁ。
そろそろ _begin_thread (Win32) とかを
生で呼び出すのがみっともなく見えてきた。
0809デフォルトの名無しさん
2007/10/03(水) 11:23:24継承っていう非常に強いクラス間の結合を回避できるってのが一番大きいことなんじゃないかな?
まぁvtblが要らんからインターフェースを実装するクラスのサイズが少し小さくなるとか、
vtbl経由じゃなくて直接インスタンスのポインタから呼びだされるから少し呼びだしのコストが減るとか
ちょっとしたメリットもあるけどさ
0810デフォルトの名無しさん
2007/10/03(水) 12:55:440811デフォルトの名無しさん
2007/10/03(水) 13:31:53CRTPで最適化するってのがいい気がする。
0812デフォルトの名無しさん
2007/10/03(水) 13:44:44emacs + flymake
0813デフォルトの名無しさん
2007/10/03(水) 14:02:360814デフォルトの名無しさん
2007/10/03(水) 15:20:25あるけど、boost::mpl みたいに高度(変態)なテンプレート
の使い方していると IntelliSense は混乱するみたいだねぇ。
0815デフォルトの名無しさん
2007/10/03(水) 18:04:310816デフォルトの名無しさん
2007/10/03(水) 18:09:400817デフォルトの名無しさん
2007/10/03(水) 19:14:320818デフォルトの名無しさん
2007/10/04(木) 00:26:03以下のようにやると、
int a,int b
になってしまう・・・
#define SEQ (int a)(int b)(int c)(int d)
#define OP(s, state, x) state,x
BOOST_PP_SEQ_FOLD_LEFT(OP, BOOST_PP_SEQ_HEAD(SEQ), BOOST_PP_SEQ_TAIL(SEQ))
0819デフォルトの名無しさん
2007/10/04(木) 00:55:23コールバックマクロが裸のコンマを含むトークン列に展開されると色々まずい。
BOOST_PP_SEQ_ENUMを使うべし。
0821デフォルトの名無しさん
2007/10/04(木) 01:16:28superclass に virtual 書き忘れているケースで有効
0822デフォルトの名無しさん
2007/10/04(木) 01:59:58それだけかよっ
gccなら警告してくれるんだぜ?
0823デフォルトの名無しさん
2007/10/04(木) 02:08:100824デフォルトの名無しさん
2007/10/04(木) 02:33:00そういう問題じゃないだろw
設計として上の継承階層だけvirtualにしたいケースだろ。
>>821は「し忘れてる」なんて書いてるけど、boost.interfaces使っても、
規定クラスの方もvirtualになるわけじゃないんだから。
0825デフォルトの名無しさん
2007/10/04(木) 03:22:430826デフォルトの名無しさん
2007/10/04(木) 03:36:200827デフォルトの名無しさん
2007/10/04(木) 09:12:02便利な仕組みって boost に用意されていたりしません?
0828デフォルトの名無しさん
2007/10/04(木) 18:43:14http://d.hatena.ne.jp/Cryolite/20041108
0829デフォルトの名無しさん
2007/10/04(木) 19:13:41http://svn.boost.org/trac/boost/browser/sandbox/boost/property
0830デフォルトの名無しさん
2007/10/04(木) 19:49:430831デフォルトの名無しさん
2007/10/05(金) 06:55:43直接プロパティのメンバにアクセスできなくて諦めた。
やっぱC++0xを待つしかないか。
0832デフォルトの名無しさん
2007/10/05(金) 13:25:260833デフォルトの名無しさん
2007/10/06(土) 01:32:23mplでは、文字列のリテラルを扱うことはできるでしょうか?
具体的には、3文字または4文字(それ以外はない)の文字列リテラルを受け取って、ある文字cが入っていれば
mplのtrue_、入っていなければfalse_を返すメタ関数を書きたいのです。
可能でしょうか?
0834デフォルトの名無しさん
2007/10/06(土) 02:43:19N2389のリストにはそれっぽいもの(N1615)があるが、Not ready for C++0x になってる
残りの期間を考えると採用される可能性は低い
>>833
たぶん無理
0835デフォルトの名無しさん
2007/10/06(土) 08:46:05じゃぁ言語仕様としてじゃなくてやっぱりテンプレート
としての実装でやらなきゃだめなんだね。
例の boost の sandbox のやつが正式に入ってくれればいいなぁ。
0836デフォルトの名無しさん
2007/10/06(土) 12:18:520837デフォルトの名無しさん
2007/10/06(土) 13:31:440838デフォルトの名無しさん
2007/10/06(土) 13:35:39やっぱりtemplateで。
0839833
2007/10/06(土) 16:50:14無理なんだ...ショボーン
0840デフォルトの名無しさん
2007/10/06(土) 17:14:02コピー代入演算子あたりのオーバーロードを駆使すれば
VB的なプロパティは実現できるではないだろうか
0841デフォルトの名無しさん
2007/10/06(土) 17:20:460842デフォルトの名無しさん
2007/10/06(土) 17:25:340843デフォルトの名無しさん
2007/10/06(土) 17:29:10C++もreference/dereferenceを扱えるようにすればいいのじゃ。
0844デフォルトの名無しさん
2007/10/06(土) 20:33:13http://www.comeaucomputing.com/techtalk/templates/#stringliteral を参考にして、
template<const char* S>
struct Z { static const int value = S[0]; } ;
とか
template<int N, const char S[N]>
struct Z { static const int value = S[0]; } ;
とか試してみたが、コンパイル通らんね。
どうにかならんのかなこれ。
0845デフォルトの名無しさん
2007/10/06(土) 20:43:06struct Z
Z::<'a', 'b', 'c'>::value
または、全てのコンパイラでいけるのかしらんけど
template<unsigned int C>
struct Z
Z<'abc'>::value
0846833
2007/10/06(土) 20:46:08struct Z { static const int value; } ;
template<const char* S>
const int Z<S>::value = S;[0]
char hoge[] = "aaa";
int main() {
return Z<hoge>::value;
}
はどうもコンパイルできるっぽいです。ありがとうござました。
0847デフォルトの名無しさん
2007/10/06(土) 20:53:55{
char const *p;
Test(void) : p(STR) { }
void Print(void) { std::cout << STR << std::endl; }
void Print2(void) { std::cout << p << std::endl; }
};
extern char const STR[] = "Hello.";
int main(int argc, char *argv[])
{
Test<STR> test;
test.Print();
test.Print2();
}
内部リンケージがあるからダメって怒られたから
externつけたらいけちまった。なんてこった…。
0848833
2007/10/06(土) 21:14:28だー
クラス外で初期化するんじゃ、全然コンパイル時の計算にならんですね。orz。
0849デフォルトの名無しさん
2007/10/06(土) 21:50:30enum{
AAA = "a"[0]
};
をコンパイルしたら分かると思うけど
"a"[0] という式がもうコンパイル時定数式とならないからムリなの。
0850デフォルトの名無しさん
2007/10/06(土) 22:03:13C++0xでは何か変化あります?
0851デフォルトの名無しさん
2007/10/06(土) 23:34:580852デフォルトの名無しさん
2007/10/06(土) 23:58:02po::options_description desc("options") ;
desc.add_options()
("hage", po::wvalue< std::wstring >()->default_value("Bjarne Stroustrup") , "hage")
;
このコードをコンパイルしようとすると、std::wstringからstd::stringへ、lexical_castしようとしてエラーになるのですが、
あきらめるしかないのでしょうか?
0853デフォルトの名無しさん
2007/10/07(日) 00:01:44L"hage" な。
0854デフォルトの名無しさん
2007/10/07(日) 00:05:43ちなみに、
Lを付けないと、default_valueはstd::wstringを引数に取るのでコンパイルエラー
Lを付けると前述の通り。
0855デフォルトの名無しさん
2007/10/07(日) 00:26:09> Throughout this document "Unicode support" is a synonym for "char to wchar_t conversion" support
0856852
2007/10/07(日) 00:52:030857デフォルトの名無しさん
2007/10/07(日) 00:56:47まぁ、po使ってる奴が少ないんだろうさ。
0858デフォルトの名無しさん
2007/10/07(日) 01:24:32過去に自分がこの板で質問した内容だった時の脱力感
0859デフォルトの名無しさん
2007/10/07(日) 01:27:07>>826 でいうと大体いなくなったからな。
0860デフォルトの名無しさん
2007/10/07(日) 03:58:10これ知らずにC++やってた(/д\;)ハズカシ
0861852
2007/10/07(日) 04:10:44なんか意外とあっさりできてしまった。
boost/program_options/value_semantic.hppに
#include <boost/program_options/detail/convert.hpp>
を付け加えて、
typed_valueのプライマリテンプレートの下に、次のメンバ特殊化を付け加えればいい。
template<>
typed_value<std::wstring, wchar_t> *
typed_value<std::wstring, wchar_t>::default_value(std::wstring const & v)
{
m_default_value = boost::any(v);
m_default_value_as_text = boost::to_utf8(v);
return this;
}
メンバ特殊化って便利だね。
0862デフォルトの名無しさん
2007/10/07(日) 04:40:00template<typename T, size_t N> char (&lengthof_helper_char_array(T (&a)[N]))[N];
#define lengthof(a) (sizeof(lengthof_helper_char_array(a)))
Rangeのsize()はちょっと違うよね。
0863862
2007/10/07(日) 05:33:37// a struct defined such that sizeof(Size<N>::Type) == N
template<int N>
struct Size
{
typedef char Type[N];
};
// returns an object whose size is the number of
// elements in the passed array
template<typename T, int N>
typename Size<N>::Type& count(const T(&array)[N]);
で、sizeof(count(a)) という。
0864デフォルトの名無しさん
2007/10/07(日) 10:47:01既に規格draft に入ってる
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2369.pdf
見てる限りでは "a"[0] も constant expression になりそうな気がする。
あるいは、直接は無理でも
constexpr char A[] = "a";
としておいて、A[0] だったら通るのかな?
これだと結局単純には template では使えなくて、>845 の上みたいなことをする必要があるかもしれないけど。
>862
コンパイル時定数として使えるものというのなら TypeTraits の extent が使えそうな気がする。
0865デフォルトの名無しさん
2007/10/07(日) 11:28:18ですか?
0866デフォルトの名無しさん
2007/10/07(日) 11:39:34extentだと変数ではなく型を渡す羽目になるような。
typeofがあることを前提とするなら問題ないけど。
0867デフォルトの名無しさん
2007/10/07(日) 19:30:20VC8って結局boostのtypeofは使えるの?つかえ内の?
0868デフォルトの名無しさん
2007/10/07(日) 21:38:48コンパイラはVC++6を使ってます。
質問ですがBoostのmatrixを使って、
複素数の行列の計算は可能でしょうか。
実数行列matrix<double>
複素行列matrix<complex>
のような感じにしたいのですが。
complexは標準ライブラリのを使おうと思ってます。
(他に推奨ありますか?)
よろしくお願いします。
0869デフォルトの名無しさん
2007/10/07(日) 21:47:48stlportでもいれないとな…
0870デフォルトの名無しさん
2007/10/07(日) 21:50:170871デフォルトの名無しさん
2007/10/07(日) 21:51:110872868
2007/10/07(日) 21:53:03VC6の時点で試合終了ですか
0873デフォルトの名無しさん
2007/10/07(日) 21:58:55VS2005にすれば
0874デフォルトの名無しさん
2007/10/07(日) 22:00:350875デフォルトの名無しさん
2007/10/07(日) 22:01:050876デフォルトの名無しさん
2007/10/07(日) 22:03:320877868
2007/10/07(日) 22:06:33これで何とかなりますか?
0878868
2007/10/08(月) 00:14:19(できれば知りたいですが)
実数行列だけ考えることにして、ためしに
http://www.page.sannet.ne.jp/d_takahashi/boost/ublas/index.html#SEC4
↑ここにある
連立方程式を解く
の例にあるコードを、そのままコピーして
ビルドしようとしましたが
\boost_1_32_0\boost\numeric\ublas\lu.hpp(131) : error C2780:
'const class boost::numeric::ublas::matrix_indirect<M,class
boost::numeric::ublas::indirect_array<A> > __cdecl boost::n
umeric::ublas::project(const class boost::numeric::ublas::matri
x_indirect<M,class boost::numeric::ublas::indirect_array<A> >
&,const class boost::numeric::ublas::indirect_array<A> &,const cl
ass boost::numeric::ublas::indirect_array<A> &)' : 3 引数が必要で
す - 2 が設定されます。
↑こんな感じのエラーが大量に発生してやばいです。
よろしければ、この解決策を教えていただけないでしょうか。
0879デフォルトの名無しさん
2007/10/08(月) 00:18:450880デフォルトの名無しさん
2007/10/08(月) 01:25:39みたところATLやMFCが必要だとは思えんし。
0881868
2007/10/08(月) 03:41:013時間くらい悩んだりしていた甲斐があったと思います。
これは行列の固有値計算もできるんですか?
0882868
2007/10/08(月) 03:56:05matrix<complex<double>>
もできた。
さっきはできなかったのに
なんかもう、色々許せない。VC6は許せない。
0883デフォルトの名無しさん
2007/10/08(月) 04:01:140884デフォルトの名無しさん
2007/10/08(月) 10:16:03回避策ありませんか?
VC2005EEです
0885デフォルトの名無しさん
2007/10/08(月) 10:40:240886デフォルトの名無しさん
2007/10/08(月) 10:47:410887デフォルトの名無しさん
2007/10/08(月) 10:50:540888デフォルトの名無しさん
2007/10/08(月) 11:15:56お、そこには思いが至らなかった。
英語版の Visual Studio 2005 では死なないのかな?
でも boost の ml などを見てると結構死んでる人もいるみたい。
>>884
なんか typedef が多重にかかると追い切れないのかもね。
boost/regex/v4/match_results.hpp の 49 行あたりにある
typedef typename vector_type::const_iterator const_iterator;
を vector_type を使わずに生のまま書くと IntelliSense は死なないみたい。
typedef typename std::vector<sub_match<BidiIterator>, Allocator>::const_iterator const_iterator;
ところで、こういう宣言文での typename って必須?
IntelliSense を殺してしまうようなヘッダファイルは Boost の
そこかしこにあるんだけど、自分で使うヘッダファイルについては
すべて修正してます。filesystem, mpl, optional, regex あたりが
その代表かなぁ。
0889デフォルトの名無しさん
2007/10/08(月) 11:26:14なんのこと?生?
>ところで、こういう宣言文での typename って必須?
必須
0890デフォルトの名無しさん
2007/10/08(月) 11:29:14ヘッダファイル使っているんだけどね。
0891デフォルトの名無しさん
2007/10/08(月) 11:39:10どうもです
書き直してみたけどやっぱり駄目みたい
便利な物は失うと辛いな(´Д`;)
0892デフォルトの名無しさん
2007/10/08(月) 11:42:25「生」ってのは、その直前に
typedef std::vector<sub_match<BidiIterator>, Allocator> vector_type;
っていう宣言文があって、そこで宣言した vector_type を使わずに、
っていう意味で使った。
typename が必要になるのってどういうケースなんだろう。
じつは typename よくわかってない。テンプレート引数に
class って書いてたのが最近は typename って書くのが流行り?
って程度の認識。
0893デフォルトの名無しさん
2007/10/08(月) 11:43:52え?だめ?おかしいなぁ。
Visual Studio 2005 Professional SP1 日本語版
boost 1.34.1 なんだけどなぁ。
0894デフォルトの名無しさん
2007/10/08(月) 11:51:46std::vector<sub_match<BidiIterator>, Allocator>::const_iterator
ってあったら、これが型なのかそうじゃない(例えばstaticメンバ変数)のかコンパイラには分からん
だからtypenameで明示しない限り型じゃないとみなすことになってる
0895デフォルトの名無しさん
2007/10/08(月) 12:00:09typedef std::vector<sub_match<BidiIterator>, Allocator> vector_type;
それでこの場合には typename がなかったのか。
0896デフォルトの名無しさん
2007/10/08(月) 12:03:44ncb ファイルを一度削除しないとだめかもね。
Visual Studio が起動している間に削除してもだめだよ。
ちゃんと終了してから削除しないと。
0897デフォルトの名無しさん
2007/10/08(月) 12:37:17やり方がどこか違うのかな・・・
残念
0898デフォルトの名無しさん
2007/10/08(月) 16:46:59インテリセンスが混乱したら
キャッシュ(ncbファイルだっけ)を削除したら一時的に直る。
0899デフォルトの名無しさん
2007/10/09(火) 00:08:10ありがとうございます
遅レスですがncb消しても駄目ですた
もう駄目ぽ
0900デフォルトの名無しさん
2007/10/09(火) 02:46:420901デフォルトの名無しさん
2007/10/09(火) 03:07:140902デフォルトの名無しさん
2007/10/09(火) 03:34:13どーだろ。でも、ライブラリ別に.soとか.aができるから、必要な奴だけリンクすることは可能。
だから部分ビルドできるかはあまり関係ない気もするんだが。
0903デフォルトの名無しさん
2007/10/09(火) 04:30:100904903
2007/10/09(火) 04:31:35http://ja.wikipedia.org/wiki/C++0x#.E3.83.A9.E3.83.A0.E3.83.80.E9.96.A2.E6.95.B0.E3.81.A8.E3.83.A9.E3.83.A0.E3.83.80.E5.BC.8F
0905デフォルトの名無しさん
2007/10/09(火) 10:06:11その Wikipedia の記事は、どういう新機能が会議で提案されてるかをかいてるので、どれが実際に C++0x に入りそうかは別個の話だよ。
http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2007/n2389.html
をみたかぎりではλ式は間に合わなさそう。
これ以上はスレ違いなので C++0x スレで。
0906デフォルトの名無しさん
2007/10/09(火) 10:09:410907デフォルトの名無しさん
2007/10/09(火) 17:43:57ランタイムライブラリをMT,MTd,MD,MDdのそれぞれ1回ずつ、バッチビルドでDebugとReleaseの両方をビルドしてみたんですが、どれもリンクエラーが出ました。
↓はMDdでビルドしたときのエラーです。
------ ビルド開始: プロジェクト: aa, 構成: Release Win32 ------
aa.obj : error LNK2001: 外部シンボル ""__declspec(dllimport) class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl std::operator<<<char,struct std::char_traits<char> >
(class std::basic_ostream<char,struct std::char_traits<char> > &,char)"
(__imp_??$?6DU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@D@Z)" は未解決です。
aa.obj : error LNK2001: 外部シンボル ""__declspec(dllimport) private: static char const * __cdecl std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::_Nullstr(void)"
(__imp_?_Nullstr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPBDXZ)" は未解決です。
aa.obj : error LNK2001: 外部シンボル ""__declspec(dllimport) char const `private: static char const * __cdecl std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::_Nullstr(void)'::`2'::_C"
(__imp_?_C@?1??_Nullstr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPBDXZ@4DB)" は未解決です。
aa.obj : error LNK2001: 外部シンボル ""__declspec(dllimport) class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl std::operator<<<char,struct std::char_traits<char> >
(class std::basic_ostream<char,struct std::char_traits<char> > &,char const *)"
(__imp_??$?6DU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBD@Z)" は未解決です。
0908デフォルトの名無しさん
2007/10/09(火) 17:46:46Debugのエラーはあまりにも長いので、とりあえずReleaseだけにしておきます。
どこか設定が間違っているのでしょうか?
お願いします。
0909デフォルトの名無しさん
2007/10/09(火) 18:13:432005、Boost1.34だが、
31->33行目はoperator()で書き直せば通ったけど?
A[0][0]=1.0; -> A(0,0)=1.0;
0910907
2007/10/09(火) 19:49:15A[0][0]=1.0; -> A(0,0)=1.0;に書き換えてみましたが、同じエラーが出てしまいます。
ちなみにboost1.34.0だと、
c:\library\boost_1_34_0\boost\numeric\ublas\detail\config.hpp(174)
: fatal error C1189: #error : Your compiler is unsupported by this verions of uBLAS. Boost 1.32.0 includes uBLAS with support for many old compilers.
というエラーが出てしまうので、1.32.0を入れました。
リンクエラーの意味がわからないので、どうすればいいのかさっぱり・・・。
0911909
2007/10/09(火) 20:32:32ランタイムライブラリは
マルチスレッド(デバッグ)?DLL
使わないとエラー大量に出るよ。
lib,includeディレクトリには1つのバージョンのみのBoostだけ入れてよ。
Boost1.34.1
これでもできないならなんか環境ファイルが壊れてるのかもしれん。
0912907
2007/10/09(火) 22:44:281.34.1入れてビルドしてみましたが、やはり>>910に書いたエラーが出てしまいます。
(このエラーが出るということは、コンパイラが1.34.1のublasに対応してないということですよね?)
1.32.0でビルドすれば、コンパイルは通るんですが、
どのラインタイムライブラリでやっても、>>907のリンクエラーかそれよりたくさんのリンクエラーが出てしまいます。
リンクエラーの内容がstd::basic_ostreamとかだったりするのは、
やはり環境変数がちゃんと設定できていないか、壊れているかそのあたりがあやしいですか?
0913デフォルトの名無しさん
2007/10/10(水) 01:38:03メモリリークの検出までやってくれるんだね。
どういう方法でリークを検出しているんだろう。
もしかしてメモリアロケータを標準のものから
置き換えてなにかやってるのかな?
0914デフォルトの名無しさん
2007/10/10(水) 02:44:06通りすがりだけど・・・
#include <ublasのヘッダもろもろ>
int main()
{
// 何も書かない
return 0;
}
でコンパイル通る?
経験則から言うとVC7以上であればublasのバージョンは問題ないと思う
>>913
unit_testのメモリリーク検出良いよね
うっかりポインタ操作をミスしていたのを見つけてくれたことがあるよ
0915907
2007/10/10(水) 04:01:05ヘッダだけのコードを1.32.0でビルドしたら成功しました。(1.34.1は、やはり>>910のエラー)
1.34.1でビルドするとboost/numeric/ublas/detail/config.hppの
// Version 6.0 and 7.0
#if BOOST_MSVC <= 1300
#define BOOST_UBLAS_UNSUPPORTED_COMPILER 1
#endif
の条件に該当してそうです。
コメントアウトでいろいろコードを削って試してみたら、どうもstd::coutを使うとリンクエラーが出るっぽいです。
原因がスレ違いで申し訳ないです。
あとは自分でなんとかします。
レスくれた方々、ありがとうございました。
0916デフォルトの名無しさん
2007/10/11(木) 02:58:54他のライブラリを使用したコードのテストをするため
unit_testを利用しようとしたところ、リンカで次のエラーを得ました
***.lib(main.obj) : error LNK2019: 未解決の外部シンボル _MAIN__ が関数 _main で参照されました。
unit_testがmain関数を横取りしていることあたりが原因だとは思うのですが
何とか上手く回避できないものでしょうか?
お心当たりのある方はご教示いただけると幸いです
0917デフォルトの名無しさん
2007/10/11(木) 03:31:31boostなんて無理してまでも使うもんじゃない。
0918デフォルトの名無しさん
2007/10/12(金) 07:06:33Cで書いた糞自作ライブラリから乗り換えようと思ってるんですが。
0919デフォルトの名無しさん
2007/10/12(金) 07:29:570920デフォルトの名無しさん
2007/10/12(金) 09:11:09Boost.FSM 10/21〜
0921デフォルトの名無しさん
2007/10/12(金) 09:15:290922デフォルトの名無しさん
2007/10/12(金) 09:32:38Cベースで、状態遷移時のコールバック関数へのポインタが
むき出しだったり、いやなことが多いのと、あのころの
自分を忘れたかったから。
>>920
お、レビューが始まるんですか。
ちょっと前に話題が出てた Property も?
と思ったらこれは Property Map か。。
http://www.boost.org/libs/statechart/doc/index.html
これと比べてどちらを使うべきかについてのアドバイスのような
ページがどっかにあったんだけど、以前読んだ時に結局
判断がつかなくてずっと自作ライブラリ使ってたんだけど、
もう嫌になったから・・・
0923デフォルトの名無しさん
2007/10/12(金) 20:21:250924デフォルトの名無しさん
2007/10/13(土) 14:37:13boost関連のincludeが見つからないと怒られたので
vsvars32.batにboostのincludeとlibパスを追加してみたら
今度はfatal error LNK1120: 外部参照 1 が未解決です。と出る
どうしたら良いのでしょうか?
0925924
2007/10/13(土) 14:42:35VC2005EEです。。。
0926デフォルトの名無しさん
2007/10/13(土) 14:56:29そっち見ないとわからない。たぶんスレ違いの気がするけれど。
0927924
2007/10/13(土) 15:02:11"void __cdecl boost::throw_exception(class std::exception const &)"
(?throw_exception@boost@@YAXABVexception@std@@@Z) が関数 "
int __cdecl boost::lexical_cast<int,class std::basic_string<char,struct
std::char_traits<char>,class std::allocator<char> > >
(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)"
(??$lexical_cast@HV?$basic_string@DU?$char_traits@D@std@@V?
$allocator@D@2@@std@@@boost@@YAHABV?$basic_string@DU?$char_traits@D@std@@
V?$allocator@D@2@@std@@@Z) で参照されました。
boosttest.exe : fatal error LNK1120: 外部参照 1 が未解決です。
長いんでカットしてました
スレ違いならごめんなさい
0928デフォルトの名無しさん
2007/10/14(日) 19:34:470929デフォルトの名無しさん
2007/10/14(日) 20:12:480930デフォルトの名無しさん
2007/10/14(日) 23:32:14VC のオプションの「C++ の例外を有効にする」がいいえになってるか
明示的に BOOST_NO_EXCEPTIONS を定義したのでは?
0931デフォルトの名無しさん
2007/10/15(月) 15:02:330932924
2007/10/15(月) 18:11:46遅レスですいません
ビンゴでした
/EHsc オプションつけたらコンパイル通った
ありがとうございました
でも、なにもした覚えはないんだけどな・・・
0933デフォルトの名無しさん
2007/10/15(月) 18:15:01おまえらは全然抵抗ありませんか?
型に関するあれやこれやはコンパイル時に解決
されているのがC++のいいところだと思ってたんだけど。
あと、これは単なるコーディングスタイルなんだけど、
メンバ変数をアクセスするときに this-> を強制したいなぁ。
あくまで自分が間違えてメンバ変数と同じ名前のローカル変数を
作ってしまうことがあるバカ者だからなんだけどね。
まぁこれは命名規則をきっちり決めておけばいいんだろうけど。
0934デフォルトの名無しさん
2007/10/15(月) 18:56:280935デフォルトの名無しさん
2007/10/15(月) 19:11:01ライブラリが出てくる。どのライブラリが
RTTIを要求するか、例外のサポートを要求するかについての
リストがあれば便利なケースもあるんじゃないかなぁ、とか思いながら。
さすがに組み込みで Boost の全ライブラリのサポートを
要求する人はいないと思うが、どれが使えてどれが使えないか
わかればいいなぁ。
0936デフォルトの名無しさん
2007/10/15(月) 21:50:350937デフォルトの名無しさん
2007/10/15(月) 22:01:110938デフォルトの名無しさん
2007/10/15(月) 22:56:570939デフォルトの名無しさん
2007/10/15(月) 23:08:43頭にアンダースコアの識別子は標準ライブラリやコンパイラのベンダのためにあるから使っちゃ駄目。
0940デフォルトの名無しさん
2007/10/15(月) 23:12:26はい、間違いです。規格書読み直してくださいね。
0941デフォルトの名無しさん
2007/10/16(火) 00:00:50>Certain sets of names and function signatures are always reserved to the implementation:
>Each name that contains a double underscore (_ _) or begins with an underscore followed by an uppercase
>letter (2.11) is reserved to the implementation for any use.
>Each name that begins with an underscore is reserved to the implementation for use as a name in the
>global namespace
大文字でないので、メンバに使うのはおkってことか?
なんにせよ俺は使いたくはないな。
0942デフォルトの名無しさん
2007/10/16(火) 00:51:090943デフォルトの名無しさん
2007/10/16(火) 08:19:500944デフォルトの名無しさん
2007/10/16(火) 19:38:49boost::mplを使うときに一々ヘッダでboost::mpl::bindとか完全修飾で書くとみにくいので
namespace mpl = boost::mplとかusingを使いたいんですが
namespace my_lib {
namespace hoge_impl {
}
0945944
2007/10/16(火) 19:46:07namespace my_lib
{
namespace hogee_impl
{
// *この名前空間でusingやnamespace hoge = foo::bar;を使う
tempalte<class Hoge, class Huga, class Foo> struct impl { typedef ... type; };
} // namespace hoge_impl
tempalte<class Hoge, class Huga, class Foo> struct hogee {
typedef typename hogee_impl<Hoge,Huga,Foo>::type type;
};
} // namespace my_lib
というようにしてhogeeをmy_lib::hogeeとして使えば問題ありませんか?
ADLとかまだよくわからないのでちょっと心配です
0946デフォルトの名無しさん
2007/10/16(火) 21:56:080947デフォルトの名無しさん
2007/10/16(火) 23:37:09どんなことが起こるのを心配してるの?
見た感じ、好きにすれば、って感じなんだけど。
0948デフォルトの名無しさん
2007/10/17(水) 21:01:27long a;
};
struct B{
A inner;
explicit B(long n){ inner.a = n;}
};
struct GetB_ : public std::unary_function<B&, A&>{
A& operator()(B& element) const{ return element.inner;}
};
typedef std::vector<B> vectorB;
typedef boost::transform_iterator<GetB_, vectorB::iterator> testIterator;
int main(){
vectorB v;
for(int i=0; i<100; ++i) v.push_back(B(i));
testIterator p2(v.begin(), GetB_());
cout << typeid(p2[0]).name() << endl;
//cout << p2[0].a << endl;←コンパイルエラー
return 0;
}
transform_iteratorについての質問なんですが
p2[0]の型がclass boost::detail::operator_brackets_proxy<class boost::transform_iterator<class GetB_,class std::_Vector_iterator<struct B,class std::allocator<struct B> >,struct boost::use_default,struct boost::use_default> >
ってなってて、[]演算子だけ変です。これでは使い物になりません。
iterator_facade.hpp見ると、
// A proxy return type for operator[], needed to deal with
// iterators that may invalidate referents upon destruction.
// Consider the temporary iterator in *(a + n)
と書いてありますが、いまいちわかりません。
自分でイテレータ作るしかないんでしょうか…?
0949デフォルトの名無しさん
2007/10/17(水) 23:03:33都合により直接メンバアクセスすることはできない。ただし、A& に変換することはできる。
ということで、不格好だけど、static_cast<A&)(p2[0]).a みたいにするか、long& getA(A& a) { return a.a; } を作って getA(p2[0]) みたいにする必要がある。
コメントの部分はこういうことだと思う。
p2[n] が A& を直接返していたとする。
この時返ってくる A& は *(p2 + n) の結果なんだけど、 p2 + n は iterator の一時オブジェクトで既に破棄されていることになる。
iterator によっては自分が破棄された場合に、指し先(この場合返ってきた A&)も無効化するものがあるかもしれない。
ということで、p2 + n に対応する iterator が存在することを保証するために proxy オブジェクトが使用されている。
0950デフォルトの名無しさん
2007/10/18(木) 01:17:26あー、なるほど。
分かりやすい解説ありがとうございます。
確かに、さっきのp2で
cout << (*(p2 + 5)).a << endl;
って添え字演算子と同じことをやると、Visual Studio がアサート失敗を出す。
vectorのイテレータが破棄されちゃうのね…。
>>948は例のためにvector使ったんで、
実は本当にtransform_iterator使いたいのはポインタだからこの問題は起こらない…。
transform_iteratorを継承してoperator[]を隠蔽してみます。
0951デフォルトの名無しさん
2007/10/18(木) 02:25:28次スレ立てよろしく
0952デフォルトの名無しさん
2007/10/18(木) 07:59:280953デフォルトの名無しさん
2007/10/18(木) 09:13:20iteratorは継承して作ってはいけない
0954デフォルトの名無しさん
2007/10/18(木) 13:31:10iterater_facadeとか使って。
0955デフォルトの名無しさん
2007/10/18(木) 14:02:590956デフォルトの名無しさん
2007/10/18(木) 17:22:44int | ∞ を表現するのに便利そう。> boost::optional
0957デフォルトの名無しさん
2007/10/18(木) 17:41:53Boostを語れゴラァ part5
http://pc11.2ch.net/test/read.cgi/tech/1192662575/
立てたはいいけどここに報告するの忘れてたよ
0958デフォルトの名無しさん
2007/10/19(金) 02:11:15通常処理→戻り値数値
通常処理でない→戻り値NULL
という関数を試作したらNULL値が0として振る舞って失敗した事があった
そのとき代替で使ってみた。良い方法かどうかは知らないけど
0959デフォルトの名無しさん
2007/10/19(金) 07:21:250960デフォルトの名無しさん
2007/10/19(金) 12:50:05int hoge() {
return NULL;
}
0961デフォルトの名無しさん
2007/10/19(金) 12:53:050962デフォルトの名無しさん
2007/10/19(金) 13:50:120963デフォルトの名無しさん
2007/10/19(金) 20:01:08例外使うところなのでは?
…それがいやなら結果入れる変数を参照渡し…
0964デフォルトの名無しさん
2007/10/19(金) 20:03:240965デフォルトの名無しさん
2007/10/20(土) 10:06:12頭固いねー
0966デフォルトの名無しさん
2007/10/20(土) 11:39:480967デフォルトの名無しさん
2007/10/20(土) 11:41:520968デフォルトの名無しさん
2007/10/20(土) 12:58:50別に NULL を返したいんじゃなくて、
エラーが識別できれば何でもいいだろう。
まさに optional の適用事例。
0969デフォルトの名無しさん
2007/10/20(土) 13:28:290970デフォルトの名無しさん
2007/10/20(土) 14:22:37単にエラーコードと結果両方返したいだけなら
tupleどころかstd::pairでもいいと思うけど。
0971デフォルトの名無しさん
2007/10/20(土) 15:14:09optionalの方が良いから。
0972デフォルトの名無しさん
2007/10/20(土) 18:26:04それじゃぁ、エラーコードを不用意に無視することができてしまうだろ。
エラーコードを無視させにくくするためには optional みたいな
仕組みがいい。例外もエラーを無視させない仕組みなので、
例外を使ってもいいとは思うけど。故意に無視することができるのは
どちらも同じ。
optional を使ってエラー状態を通知する方法と
例外を使ってエラーの発生を通知する方法の違いは
直情より上の呼び出し元までエラー状態が伝搬するか否か。
0973デフォルトの名無しさん
2007/10/20(土) 18:26:57俺もそう思う
std::map::insert が pair 返すし
tuple は tr1 にあるけど、optional は無いし
0974デフォルトの名無しさん
2007/10/20(土) 18:53:29optionalは存在するんだ
もっと勉強しろこのバカチンどもが!
0975デフォルトの名無しさん
2007/10/20(土) 20:42:19動的メモリがあまり自由でない環境だと、DefaultConstructibleでない
値ベースの型って、なにげに使い勝手が悪かったりするような
0976デフォルトの名無しさん
2007/10/21(日) 00:38:49ごめんね、ママ
0977デフォルトの名無しさん
2007/10/21(日) 00:39:51> tuple は tr1 にあるけど、optional は無いし
はい、スレ否定、来ました。
0978デフォルトの名無しさん
2007/10/21(日) 12:24:18はいはい
boost::value_initialized
0979デフォルトの名無しさん
2007/10/21(日) 13:38:11value_initialized ってそういうもんだったっけ?と思ったらやっぱり DefaultConstuctible かどうかを解決なんてしないじゃん。
名前に惑わされてない?
0980デフォルトの名無しさん
2007/10/21(日) 15:48:010981デフォルトの名無しさん
2007/10/21(日) 17:10:15aligned_storageの説明ってどっかにあります?
0982978
2007/10/21(日) 18:17:30すいません。ご指摘のとおり。
default construtibleでない=組み込み型が初期値で初期化されない、
と勘違いしてました。
0983デフォルトの名無しさん
2007/10/21(日) 18:48:46説明っていっても、指定サイズの char バッファを指定アライメントに置くだけだよ。
BoostにもTR1にも入ってる。
今の実装だと type_with_alignment<> 経由で求まる型を使ってるけど、
C++0x では alignof/alignas あたりを使うようになると思われる。
0984デフォルトの名無しさん
2007/10/21(日) 21:25:27今まではマクロ使ってたけど
0985デフォルトの名無しさん
2007/10/23(火) 16:33:24組み込みっぽい用途に結構使われてるからね。
0986デフォルトの名無しさん
2007/10/24(水) 13:42:52乙
0987デフォルトの名無しさん
2007/10/24(水) 23:57:280988デフォルトの名無しさん
2007/10/25(木) 02:23:16全部じゃないけど使っているクラスもある。
たとえば boost::shared_ptr とか boost::auto_array とか。
0989デフォルトの名無しさん
2007/10/25(木) 03:54:30型名が長くなりすぎ。推論してくれ・・
0990デフォルトの名無しさん
2007/10/25(木) 09:53:140991デフォルトの名無しさん
2007/10/25(木) 10:01:22Linuxのカーネルのビルドもカップ麺ができるまでに終っちゃいます
0992デフォルトの名無しさん
2007/10/25(木) 17:41:230993デフォルトの名無しさん
2007/10/25(木) 19:23:57並行してビルドできるプロジェクトは任意に指定できるんじゃね?
0994デフォルトの名無しさん
2007/10/25(木) 21:29:020995デフォルトの名無しさん
2007/10/25(木) 22:29:180996デフォルトの名無しさん
2007/10/25(木) 22:35:44?コンパイル速度には影響しそうだけど
0997デフォルトの名無しさん
2007/10/25(木) 23:27:55しっかりしろ。sizeofがある時点で、typeofのようなものは簡単に実装できるなんてわかりそうなもんだろ。
そして、sizeofでコンパイル速度が落ちるか?
0998デフォルトの名無しさん
2007/10/25(木) 23:33:09これでaの型を推論するのに時間がかかるわけがない。
これでコンパイル速度が遅くなるんなら、下の簡単なテンプレート関数でも遅くなるだろ。
template<class T>
void foo(T t){}
foo(hoge());
0999デフォルトの名無しさん
2007/10/26(金) 07:32:051000デフォルトの名無しさん
2007/10/26(金) 07:32:50次スレ
Boostを語れゴラァ part5
http://pc11.2ch.net/test/read.cgi/tech/1192662575/
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。