Boostを語れゴラァ part4

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
語って.はぁと part boost::mpl::int_<4>

過去スレ
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/
2デフォルトの名無しさん:2007/04/04(水) 14:09:31
■関連書籍■
Boost 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/
3デフォルトの名無しさん:2007/04/04(水) 14:09:44
次バージョントップページ(予定)
http://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/
4デフォルトの名無しさん:2007/04/04(水) 15:25:44
>>1

5デフォルトの名無しさん:2007/04/04(水) 16:30:34
____              progress_
|← reject|  boostの中の人  display   ユーザー
. ̄.|| ̄ ̄        ┗(^o^ )┳(^o^ )┳(^o^ )┛≡=-
  ||            ┏┗  ┗┗  ┏┗ ≡=-
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
6デフォルトの名無しさん:2007/04/04(水) 16:33:10
>>1
乙!
7デフォルトの名無しさん:2007/04/04(水) 18:25:16
>>5が何度見てもほのぼのする
8デフォルトの名無しさん:2007/04/06(金) 11:08:07
      |:〉|:〉    /               \      |:〉|:〉
    r::ニミ:ヽ    /:/ /        ハ       ヽ「:| ___「:|__
       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.:.| |
9デフォルトの名無しさん:2007/04/08(日) 06:09:19
variantに関して質問。
apply_visitor(Visitor(), v);
と書くと、vに入れた型に合った
operator()が呼ばれるようですが、
これは実行時型情報を利用しているんでしょうか?
10デフォルトの名無しさん:2007/04/08(日) 14:44:29
BOOST_PP で生成された switch case 見て萎えたのは
俺だけではないはずだ
11デフォルトの名無しさん:2007/04/09(月) 00:15:21
anyはRTTIを利用しているがvariantに関しては知らん
12デフォルトの名無しさん:2007/04/09(月) 04:35:29
なんという閑古鳥・・・
人がいなさすぎてビクビクしてしまった
progress_displayは間違いなくreject
       
   / ̄\
  | ^o^ |  
   \_/
13デフォルトの名無しさん:2007/04/10(火) 02:33:19
           マ. <: : : :! |:.:.:.:.:.:.:.:.:.:.:.:`' 、   .j /: : | ./7
            >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: : : : : : ヽ\
14デフォルトの名無しさん:2007/04/11(水) 14:21:15
boost::gil
http://opensource.adobe.com/gil/
で、デザインガイドのとこに
concept
ってのがでてくるんですが、これって何ですか?

ソースでは使われてないので概念的なことだとは思うのですが。
15デフォルトの名無しさん:2007/04/11(水) 14:32:21
「C++ concept duck-typing」でぐぐれ。
16デフォルトの名無しさん:2007/04/11(水) 16:58:58
わかったような、わからんような・・・とりあえずサンクス
17デフォルトの名無しさん:2007/04/11(水) 19:29:39
C++0xでも採用予定なんじゃなかったっけ
concept_mapだっけか
18デフォルトの名無しさん:2007/04/11(水) 22:32:41
19デフォルトの名無しさん:2007/04/12(木) 00:38:25
>>17-18
サンクス。
C++0xで採用予定っぽいのは調べてるうちにわかった。
とりあえず、concept = 実装を伴わないインターフェース
って風に理解した(おおざっぱだけど)。
20デフォルトの名無しさん:2007/04/12(木) 04:33:02
21デフォルトの名無しさん:2007/04/12(木) 19:06:41
下記のコードで
A( 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;
}
22デフォルトの名無しさん:2007/04/12(木) 19:36:15
普通に考えたら
A( 1 )
in block
A( 2 )
~( 2 )
out block
~( 1 )
じゃないか?
23デフォルトの名無しさん:2007/04/12(木) 20:32:36
> if( boost::shared_ptr<A> aa = wa.lock() ) {

うへえ、キモい
24デフォルトの名無しさん:2007/04/12(木) 21:05:05
そうか?
25デフォルトの名無しさん:2007/04/12(木) 23:44:37
>>23 kwsk
26デフォルトの名無しさん:2007/04/13(金) 00:37:03
aaの生存期間ってif文終了時点まで、であってるかな
27デフォルトの名無しさん:2007/04/13(金) 01:08:14
// ericne, 27/nov/05: CW9_4 doesn't like if(shared_ptr x = y)
shared_ptr<Derived> dep = cur2->lock();
if(dep.get())
{
sout << "0x" << (void*)&*dep << ',';
}

使うべきだが使えない。
いつものパターンです
28デフォルトの名無しさん:2007/04/13(金) 01:47:29
int main()
{
 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氏がなにが言いたいのか分からない件について
29デフォルトの名無しさん:2007/04/13(金) 08:23:51
27はifの中での変数宣言が使えないコンパイラがあるとでも言いたいんだろ。
でもこれforでの変数宣言よりも古くかあるんだけどな……。
30デフォルトの名無しさん:2007/04/13(金) 10:01:06
shared_ptrでは、ということだろ。
詳しい条件は知らない
31デフォルトの名無しさん:2007/04/26(木) 10:41:52
みんな CVS から落としてきたやつを使ってるの?
それとも 1.33.1 ?
32デフォルトの名無しさん:2007/04/26(木) 11:40:48
linuxでopenvrmlというライブラリをビルドしていたんですが、
boost/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に対してもそれほど詳しくないので質問が曖昧で申し訳ないのですが、
何かアドバイス頂けるとありがたいです。
33デフォルトの名無しさん:2007/04/26(木) 11:49:59
winだとcvsからのをビルドできたよサイト見ながらだったがまあvc8+stlportができなかったが
34デフォルトの名無しさん:2007/04/26(木) 11:54:40
>>32
ptr_containerが入ったの割と最近だから
35デフォルトの名無しさん:2007/04/26(木) 19:41:27
そういや久しぶりにチェックアウトしたらBoost.BuildがV2になったんだな。
-sTOOLSやっても変な警告でるし-sBUILDも効かないしで悩んでしまった。
36デフォルトの名無しさん:2007/04/26(木) 20:01:05
V2 でいろいろ変わっているね。Visual Studio 2005 使用中。
--toolset の指定で vc80 ってできない。自動判定で msvc になる。
以前ライブラリのファイル名に vc80 って入っていた部分が
vc になってるのでオートリンクで見つけられないなどなど。

Visual Studio だからかな。ほかの環境ではどう?

1.34 全然リリースされないね。
3732:2007/04/27(金) 00:43:09
>>34
レスありがとうございます。
なるほどそういうこともある訳ですか。
現在も色々と追加修正されているということですね。

試しに1.33.1のソースをmakeして、元からあったboostと置き換えてみたところ、
ライブラリのmake自体にはコケたものの関数名の衝突はなくなりました。
boostについての疑問は解決しましたので後は自分で頑張ってみます。
ありがとうございました。
38デフォルトの名無しさん:2007/04/27(金) 02:26:44
>>36
--toolset=msvc-8.0
でおk
自動でバージョンが入らないのは多分バグ。
39デフォルトの名無しさん:2007/04/27(金) 20:27:20
http://lists.boost.org/Archives/boost/2007/04/120375.php

>The first beta of what will become version 1.34.0 is now

キタ━━━━━━(゚∀゚)━━━━━━!! 
40デフォルトの名無しさん:2007/04/27(金) 21:21:11
まああれだsvnでやってるからあんまかわらなん・・・・・・・
41デフォルトの名無しさん:2007/04/27(金) 22:21:56
>>38 ほほう。情報THX。
俺自分で Exepress CX つかってバイナリパッケージ作ってるんで、
次にパッケージングするときにやってみるよ。
パッケージって言っても所詮大学の研究室の学生数人で使うだけだが。
42デフォルトの名無しさん:2007/04/28(土) 18:41:41
serializationで複数のDLLにまたがるクラスをシリアライズするコードを書くと
DLLと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のソースを書き換えるしかないですか?
43デフォルトの名無しさん:2007/04/29(日) 03:14:16
move_ptrってどういうものなんでしょうか?
44デフォルトの名無しさん:2007/04/29(日) 14:05:09
45デフォルトの名無しさん:2007/04/30(月) 07:55:45
svnリポジトリはどこ?
sf.net は CVS だけ?
46デフォルトの名無しさん:2007/04/30(月) 12:34:08
めもめも

boost::tokenizerでwchar_tを使うには
<boost/tokenizer.hpp>のclass tokenizer宣言の後に

  typedef tokenizer<
    char_delimiters_separator<wchar_t>,
    std::wstring::const_iterator,
    std::wstring
  > wtokenizer;

とか追加すれば良いっぽい。

と思ったけど同じようなことが数年前に個人舞炉愚に既に書いてあるな。
ノイズにしかならん。俺は馬鹿か。
47デフォルトの名無しさん:2007/04/30(月) 13:21:39
1.34あたりにはデフォで入ってたりせんかのう
48デフォルトの名無しさん:2007/04/30(月) 16:16:24
>>45
CVSだけー
次にどっから来たか書こうか
49デフォルトの名無しさん:2007/05/01(火) 07:05:39
svn便利なのになー
50デフォルトの名無しさん:2007/05/02(水) 04:00:00
21 名前:デフォルトの名無しさん[sage] 投稿日:2006/09/24(日) 17:51:52
Visutl 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.. ってして作業内容把握できるようにすると判りやすいかも
51デフォルトの名無しさん:2007/05/02(水) 09:00:19
関係ないけど、DOSってscriptコマンドみたいのは無いのかね
52デフォルトの名無しさん:2007/05/02(水) 11:13:28
本当に関係ないね。
53デフォルトの名無しさん:2007/05/07(月) 03:12:56
しかしboostは、アルゴリズムや数学に関する機能は豊富だけど、
アプリ開発にはいらんような機能ばっかだな。
まあC++の用途を考えれば、そういうのに偏るのも分からないでもないが。
個人的にはXMLのパーサを入れてほしい。
54デフォルトの名無しさん:2007/05/07(月) 04:28:04
言いだしっぺの法則
55デフォルトの名無しさん:2007/05/07(月) 04:58:28
apache のヤツでええやん。
56デフォルトの名無しさん:2007/05/07(月) 10:26:34
boostはC++の委員会によって標準化されたライブラリだからこそ使うに値する。
よく使われるような機能がないからといって、
その辺で公開されているライブラリを使おうというのであれば、boostの存在価値が薄らぐ。
57デフォルトの名無しさん:2007/05/07(月) 16:02:28
じゃあいつまでも独りでグチグチ言ってろ
58デフォルトの名無しさん:2007/05/07(月) 16:54:00
spiritは面白いけどコンパイルが重すぎるなぁ
59デフォルトの名無しさん:2007/05/07(月) 19:29:54
XMLパーサなんかいらねえよ


でもそのうち入るんだろうなあ
60デフォルトの名無しさん:2007/05/07(月) 19:53:31
SerializationのXML読み書き部分から独立なんてことになったりして。
xml_archive読んだことないから、そんなことができるかどうかは知らないが。
61デフォルトの名無しさん:2007/05/07(月) 20:00:15
boost1.34.0をVisualC++7.1(2003)でコンパイルしたのですが、
同じライブラリファイルで名前にバージョンが入るのと入らないのができてしまいました。
たとえば、
boost_filesystem-vc-mt-1_34.lib と
boost_filesystem-vc-mt.lib です。
なぜ二つあるんでしょうか?
そしてどちらを使えばいいんですか?
62デフォルトの名無しさん:2007/05/07(月) 20:04:18
バイナリを比べて見たら?
63デフォルトの名無しさん:2007/05/07(月) 20:14:11
まったく同じものです。
Windowsではシンボリックリンクが使えないので、
このように同じファイルを用意したのでしょうか?
64デフォルトの名無しさん:2007/05/07(月) 20:16:09
>>63
Jamfile読めば分かるけど少なくともNTFSではハードリンクになってるはず。
65デフォルトの名無しさん:2007/05/07(月) 20:32:27
bjamのコマンドの末尾に > log.txt つけるのでもいいぜ。
66デフォルトの名無しさん:2007/05/07(月) 20:57:49
バージョンのついてるのとついてないの、
どっちをリンクすればいいんですか?
67デフォルトの名無しさん:2007/05/07(月) 21:10:50
VCならパスの設定しておけば自動でリンクされると思うが
68デフォルトの名無しさん:2007/05/08(火) 23:20:40
>>59
俺は欲しいが
69デフォルトの名無しさん:2007/05/09(水) 00:50:40
XMLパーサーもまだ入ってないのか。まさに無駄な糞ライブラリだな。
70デフォルトの名無しさん:2007/05/09(水) 01:11:43
progress_displayはあるけどな
71デフォルトの名無しさん:2007/05/09(水) 02:25:57
>>5
72デフォルトの名無しさん:2007/05/09(水) 23:24:42
だいたい余分な機能が多すぎなんだよ。八元数なんていったい誰が使うんだ。
そりゃ使うやつはいるかもしれないが、準標準C++ライブラリを謳うBoostに入れる意味があるのか?
73デフォルトの名無しさん:2007/05/09(水) 23:36:38
要らない人は使わなければ良いだけでは?
74デフォルトの名無しさん:2007/05/09(水) 23:36:57
3Dで使う人もいるんでない?
75デフォルトの名無しさん:2007/05/09(水) 23:41:58
四元数は使うだろうけど、八元数まで使うの?
76デフォルトの名無しさん:2007/05/10(木) 01:25:06
クォタニオンも3Dグラフィックス以外では使い道なさそうだなあ。
それにDirectXにはクォタニオンのクラスが元々あるんだからそれ使うだろうし、
OpenGLにも多分あるだろうからわざわざBoostのを使う人はいないだろう。
77デフォルトの名無しさん:2007/05/10(木) 01:29:26
OpenGLにはクォタニオンは無い。DirectXのはいろんな意味で使いにくい。
複素数なんかと同じ意味で「標準ライブラリ」に組み込まれるのはおかしくないと思う。
複素数だって使わない人はいるでしょ?
78デフォルトの名無しさん:2007/05/10(木) 01:37:50
じゃあクォタニオン使わずにuBLASの行列で演算すればいい。
79デフォルトの名無しさん:2007/05/10(木) 01:45:08
4と4x4じゃコストに差がありすぎる。
80デフォルトの名無しさん:2007/05/10(木) 02:23:26
お前ら、progress_displayが泣いてるぞ。
81デフォルトの名無しさん:2007/05/10(木) 12:16:14
ここでboostの質問してもよかですか?
82デフォルトの名無しさん:2007/05/10(木) 13:04:28
progress_displayって生きてる意味あるの?
まぁ、もうとっくに死んでるんだけどね。
お前ら実はシックスセンスの持ち主なんじゃないの?
83デフォルトの名無しさん:2007/05/10(木) 13:46:14
いいえ、僕はセックスシンスの持ち主です。
84デフォルトの名無しさん:2007/05/10(木) 14:21:27
僕はソックスモエス
85デフォルトの名無しさん:2007/05/10(木) 14:48:05
グラフ関数のまとめサイトある?
なんか面白そうな事が書いてあるから使って見たいんだが
86デフォルトの名無しさん:2007/05/10(木) 14:57:22
87デフォルトの名無しさん:2007/05/10(木) 16:29:34
>>86
学校の問題でSTL使ってるのはじめてみた・・・・・orz
88デフォルトの名無しさん:2007/05/10(木) 19:04:08
ブーストを使うお前らブースターだな
89デフォルトの名無しさん:2007/05/11(金) 00:55:06
>>86こりゃいいや。ブックマークいれといた
90デフォルトの名無しさん:2007/05/11(金) 12:43:17
cmake
どうなるんだろ
unix,win混在環境なので非常に気になる
91デフォルトの名無しさん:2007/05/11(金) 18:11:00
>>86
こういうページを見ると
東大すげえなって思う
92デフォルトの名無しさん:2007/05/11(金) 22:05:07
>>86
精神衛生上非常に好ましいな
93デフォルトの名無しさん:2007/05/12(土) 18:31:40
using namespace std;
94デフォルトの名無しさん:2007/05/12(土) 18:39:35
>>93
この俺様のソースファイルでは、名前が衝突してないよという意味だからいいだろ、別に。
95デフォルトの名無しさん:2007/05/12(土) 19:05:29
>>94
微妙にとげのある言い方だな
96デフォルトの名無しさん:2007/05/12(土) 19:30:32
using namespeceを使うのは、gotoを使うのと同じぐらい初心者だ。
97デフォルトの名無しさん:2007/05/12(土) 19:47:03
「gotoは絶対にダメだ」と言う奴は「自称上級者、実際初心者」だ。

using namespaceもgotoと同様に、絶対ダメなものではない。

96こそがホンモノの初心者だ。
98デフォルトの名無しさん:2007/05/12(土) 19:53:40
まだ経験が足りないだけかもしれんがgoto使わないとヤバイって状況には陥ったこと無いな
例外を使わざるを得ないって状況はC++やり始めた頃から結構遭遇してるけど
制約が多い環境でのプログラミングならそういうのもよくあることなのかゐ?
99デフォルトの名無しさん:2007/05/12(土) 19:55:13
上級者という者は、初心や上級というものを気にしない。

という自己言及のパラドックス。
100デフォルトの名無しさん:2007/05/12(土) 20:12:05
>>98
C++だと例外があるからな。
Cだと異常処理の時に便利だよ。(マクロとコーディングルールも合わせて使うけどな)
101デフォルトの名無しさん:2007/05/12(土) 20:12:06
gotoやループ内でのswitch-caseによるフラグ操作も原則禁止だな。
ただし状態遷移のプログラムの場合は堅い設計の上で意図的に使う。
問題の本質がそうであるから。
102デフォルトの名無しさん:2007/05/12(土) 20:37:54
兵が恐れずにusing namespaceを使うスレでも立てるかな
103デフォルトの名無しさん:2007/05/12(土) 20:47:27
そんな話、C++初心者スレかどっかでやれよ
104デフォルトの名無しさん:2007/05/12(土) 20:52:29
Regexって日本語通るようになりましたか?
105デフォルトの名無しさん:2007/05/12(土) 21:11:54
「日本語通る」というのにもいろいろ水準があるような?
106デフォルトの名無しさん:2007/05/12(土) 21:14:36
ワイド文字バージョンなら今も昔も使えてるんじゃね。
サロゲートペアが混ざった場合にどうなるか知らんけど。
107デフォルトの名無しさん:2007/05/12(土) 21:16:20
2重ループの抜け出しには迷わずgotoする俺は真の猛者。
108デフォルトの名無しさん:2007/05/12(土) 21:19:53
SJIS範囲内だけでいいなら16bitSJIS使うという裏技もある
109デフォルトの名無しさん:2007/05/12(土) 21:23:06
UTF-8使え
110デフォルトの名無しさん:2007/05/12(土) 21:25:19
>>109
アホ発見
111デフォルトの名無しさん:2007/05/12(土) 22:38:41
EUCを使え
112デフォルトの名無しさん:2007/05/12(土) 23:40:42
ヘッダファイルでは使わんが、
ソースで using するのは別によくね?
113デフォルトの名無しさん:2007/05/12(土) 23:46:21
画面内に収まる程度のコード内なら普通に使う。
114デフォルトの名無しさん:2007/05/12(土) 23:47:38
関数スコープ内だったらusing宣言は自由に使っていいと思う。
115デフォルトの名無しさん:2007/05/12(土) 23:49:29
書くときは楽だが、保守するときは大変。
なので、stdしか使ったことないな。
116デフォルトの名無しさん:2007/05/12(土) 23:51:35
使わないほうがその関数を使ってる場所を検索一覧するときに楽。
117デフォルトの名無しさん:2007/05/13(日) 00:00:48
長い名前空間があった場合ってどうしてる?
エイリアス作るの?
118デフォルトの名無しさん:2007/05/13(日) 00:04:11
namespace hogehoge = sexualvioletmikomikonurse;
119デフォルトの名無しさん:2007/05/13(日) 00:11:23
エイリアス作るの?の意味がわからなかったのか?
120デフォルトの名無しさん:2007/05/13(日) 00:29:10
sumimasen
121デフォルトの名無しさん:2007/05/13(日) 00:47:08
実際何文字あっても先頭数文字が特徴的ならIDEの補完で終わるからいいんだけどな
122デフォルトの名無しさん:2007/05/13(日) 00:49:22
入力が面倒なんじゃなくて、
sexualvioletmikomikonurse::tokachitukuchite::gossungossungosunkugi(...);
なんて読みたくないだけ。
123デフォルトの名無しさん:2007/05/13(日) 00:50:26
つか、実際にそういう名前に遭遇するか?
俺は経験ないが
124デフォルトの名無しさん:2007/05/13(日) 00:56:12
まあないけど。
125デフォルトの名無しさん:2007/05/13(日) 00:56:52
>>122
真ん中のがなんだか解らなかったのが悔しい。

セクシャルバイオレットみこみこナース::とかちつくちて::ごっすんごっすん五寸釘();
126デフォルトの名無しさん:2007/05/13(日) 01:34:50
やっぱヘッダの中でusingするのは抵抗感じるな。
includeの後だったら影響無いのは判っているけどね……

ソース中でusingしたときのリスクってなんかあったっけ?
127デフォルトの名無しさん:2007/05/13(日) 01:39:43
↑↑アイマスじゃなかったっけ?
実物は見たことないけど。五寸釘は知らない。
128デフォルトの名無しさん:2007/05/13(日) 01:40:46
>>126
using って using directive なのか using declaration なのかどっち?
どちらにせよ
>includeの後だったら影響無いのは判っているけどね……
はちょっと意味が分からないのでもうちょっとkwsk
129デフォルトの名無しさん:2007/05/13(日) 01:43:08
>>126
using namespace foo; は原則として使わない。
using foo::bar; は必要があれば使う。
ネームスペース全体をusingすると、先方のネームスペースの変更で名前が衝突するリスクが発生する。
130デフォルトの名無しさん:2007/05/13(日) 01:46:46
>>127
アリス・マーガトロイド
131デフォルトの名無しさん:2007/05/13(日) 01:48:00
すごい勢いで話がずれてる
132デフォルトの名無しさん:2007/05/13(日) 01:55:10
sumimasen
133デフォルトの名無しさん:2007/05/13(日) 01:56:11
>>122
全部分かってしまった俺は負け組み。
134デフォルトの名無しさん:2007/05/13(日) 02:01:16
参考書だとスペースの都合上 using するのは仕方ない。
135デフォルトの名無しさん:2007/05/13(日) 02:02:49
C++は木材資源にも優しい言語でした
136デフォルトの名無しさん:2007/05/13(日) 02:04:39
アイマス作るの?の意味がわからなかったのか?
137デフォルトの名無しさん:2007/05/13(日) 02:09:12
ヲタばっかだなこのスレ
138デフォルトの名無しさん:2007/05/13(日) 02:12:01
boost::shared_ptr< boost::variate_generator< boost::mt19937, boost::uniform_smallint<> > >
みたいなのは適当にtypedefしとけって事ですか?
139デフォルトの名無しさん:2007/05/13(日) 02:14:22
うん
140デフォルトの名無しさん:2007/05/13(日) 07:19:30
↓他人のtypedefの定義名が気に入らなくて、結局、全部のソースを直した奴
141デフォルトの名無しさん:2007/05/13(日) 10:11:47
Boost 1.34 age
142デフォルトの名無しさん:2007/05/13(日) 10:18:16
↑ 新機能も使わないのに何となく入れ替えてみる奴
143デフォルトの名無しさん:2007/05/13(日) 10:37:04
>53
DOM オブジェクトが返ってくるわけでもないんで望んでるものとは違うだろうけど、機能限定版 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 レジストリとかも扱えるそうな。
144デフォルトの名無しさん:2007/05/13(日) 11:19:30
Boost1.34リリースですか。
Filesystemもようやっと国際化(UTF-8/UTF-16対応)か。

Xpressiveがboostの仲間入りですな。
Xpressiveて、マルチバイトOKだったっけ?
ドキュメント斜め読みする限りは対応していなさそうな感じだったけど……
145デフォルトの名無しさん:2007/05/13(日) 12:26:31
ドキュメント斜め読みしたらそのものずばりがあるようなんだが。
試してないが。
146デフォルトの名無しさん:2007/05/13(日) 13:47:05
あ、localeに対応しているって書いてあるね。スマソ。
後で試してみよう。
147デフォルトの名無しさん:2007/05/14(月) 03:53:05
1.34来てるのになんでこんなに盛り上がってないの?
148デフォルトの名無しさん:2007/05/14(月) 07:40:42
cvs派が結構いるから、ドキュメントさえあればって感じ
149デフォルトの名無しさん:2007/05/14(月) 12:41:26
visual studio 2003にboostをインストールしたら
boost::reg_expression<char> regex = "[a-zA-Z].*[a-zA-Z]";
でerror C2262: 'regex' : 破棄できません。
というエラーが出ます

インストール失敗?

150デフォルトの名無しさん:2007/05/14(月) 14:51:31
>>53
そういうのは別のライブラリを使え、ってことじゃないかなぁ。
って、何がスタンダードなのかな。
Expat とか libxml とか?
Windows なら MSXML もあるね。
151C2262:2007/05/14(月) 14:52:48
Compiler Error C2262'identifier' : cannot be destroyed
http://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
152デフォルトの名無しさん:2007/05/14(月) 15:35:40
>>149
代入演算子とコンストラクタの違い分かってる?

boost::regex regex("[a-zA-Z].*[a-zA-Z]");
153デフォルトの名無しさん:2007/05/14(月) 17:23:49
ところで、漏れ Windows でのプログラミングってあんまりしたことなくて、
たまに下としても市販のライブラリを購入したことがなくて、
フリーのものばかり(代表的なものが boost)使ってきたんだけど、
市販の開発用ライブラリはどんなインストーラになってるの?

インストールすると C:\Program Files\ 以下にインストールされてしまうの?
自分で Boost を Windows にインストールするときには
C:\usr\lib とか C:\usr\include とかにライブラリのバイナリとヘッダを
置いているんだけど、Windows 的流儀ってのがあるのかな?

つーのは、1.34 も出たことだし、内輪で使うためにバイナリパッケージを
インストーラつきで作ろうと思ってるんだけど、パスをどうするかが
人それぞれで好みが違うってことが分かってデフォルトは何にしたらいいのかなって。
154デフォルトの名無しさん:2007/05/14(月) 17:54:46
>>153
Program Files\xxx\includeにヘッダ、Program Files\libにライブラリが一般的だと思う。
インクルードパスや、ライブラリパスがやたらと長くなるけど、プロジェクトに一回設定したら
実際のコマンドライン生成はIDE任せなんで気にしない。
unixでもpkgconfig使いだすと、コマンドラインで1kbyteとか行ったりするし。
155デフォルトの名無しさん:2007/05/14(月) 18:22:54
マニュアルのsplitの説明が間違ってる

string 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
156デフォルトの名無しさん:2007/05/14(月) 20:24:03
なるほど、インクルードファイルについては各ライブラリの
ディレクトリ以下の include に、バイナリについては
\Program Files\lib という共通のディレクトリというわけですか。
バイナリが共通のディレクトリになっている理由は
動的リンクライブラリへのパスを一箇所にまとめるためですかね。
スペース入りのパスにいろんなものを置くのが気持ち悪くて、
Windows での流儀を知りたいと思っていました。
157デフォルトの名無しさん:2007/05/14(月) 21:13:12
デフォルトは C:\Program Files\組織名\ソフト名\ の下にして、気持ち悪い人はインストーラの操作で
変更できるようにするのが良いと思う。なお、C:\Program Filesなどのパス名はハードコードしないで
SHGetSpecialFolderPath などで取得するべし。(念のため)
158デフォルトの名無しさん:2007/05/15(火) 06:59:15
>>157
インストール先ですが、組織名ってのはとりあえず省略して、
C:\Program Files\Boost で。パス名については ExePress CX
でパッケージングすると自動的で取得してくれるようです。
シェアードオブジェクト(dll)も
C:\Program Files\Boost\lib 以下に配置すべきですかね?
それともすでにパスが通っているどこかにコピーすべきでしょうか。
しかし C:\Windows\ 以下なんぞに *.dll をコピーすると
ぶっ殺されそうな気がするので、これまた Windows の流儀ってのが
あるんでしょうか?
159デフォルトの名無しさん:2007/05/15(火) 07:02:22
ちなみにすでに C:\Boost\ をデフォルト位置にした
1.33.1 と 1.34 の Windows + VC++8 用バイナリパッケージと
ICU のバイナリパッケージは作りました。あとは

1)C:\Boost\ って Windows 的にはどうよ。
2)アンインストーラ対応にすべき?
  それとも単にターゲットフォルダに展開して終わり?
3)DLL はデフォルトでパスが通ってそうなところに突っ込むべき?
160デフォルトの名無しさん:2007/05/15(火) 10:41:54
アンインストーラにも対応してないような半端なインストーラなんて無いほうがまし。
レジストリを書き換えたり、スタートメニューに挿入したりするのなら、アンインストールにも
対応するべきだし、そうでないプログラムなら単純にZIPファイルで配布するのが良いだろう。
ご存知だと思うが、標準でWindowsではZIPファイルはフォルダとして見える。
どうせプログラマしか使わないのだから、配置は任せるのが良いんじゃないかな。
161デフォルトの名無しさん:2007/05/15(火) 11:40:19
>160
Win2kはwindowsじゃないですか、そうですか・・・
162デフォルトの名無しさん:2007/05/15(火) 11:41:49
終わってるWindowsだな。もちろん終わってるから悪いというわけではないけど。
163デフォルトの名無しさん:2007/05/15(火) 12:10:07
だがそれがいい
164デフォルトの名無しさん:2007/05/15(火) 17:10:21
165デフォルトの名無しさん:2007/05/15(火) 17:47:54
圧縮フォルダが使えることと、zipがシームレスにフォルダに見えることは同じ事なのか?
166デフォルトの名無しさん:2007/05/15(火) 17:58:24
圧縮フォルダでZIP書庫はフォルダとして見えるがシームレスではない
167デフォルトの名無しさん:2007/05/15(火) 18:00:57
所詮はshellのオマケ機能だしな。
NTFS標準の圧縮フォルダならシームレスと言えるのでは。
168デフォルトの名無しさん:2007/05/20(日) 21:18:29
>>129
その書き方じゃあ、ネームスペース全体をusingしなけりゃ
その問題が起きないように読めるが、そんなことは無いだろ?
ADLあるし。まあ、程度の差はあるだろうが。
169デフォルトの名無しさん:2007/05/21(月) 00:10:25
これはなんなの?
170デフォルトの名無しさん:2007/05/21(月) 22:27:14
::: 唐突に :::
boost::gui の話ってどうなったの?
171デフォルトの名無しさん:2007/05/22(火) 02:58:45
C++でクロスプラットフォームなGUIはQtを使えばいいだろ
172デフォルトの名無しさん:2007/05/22(火) 07:22:43
他にもwxやらGtkやらfltkやら乱立してるからなぁ・・・
良い物ができたとしてもboostの入り込む余地はあるんだろか
173デフォルトの名無しさん:2007/05/22(火) 10:20:17
Notusちょっと面白そうだったが…放置されてるな
174デフォルトの名無しさん:2007/05/22(火) 10:43:34
>>171
商売物で使うには法外な値段
175デフォルトの名無しさん:2007/05/22(火) 12:24:48
dotoneto
176デフォルトの名無しさん:2007/05/22(火) 16:10:41
GUIに速度は不要だからもはやC++でGUI作る意義は薄いと言えなくも無い
スクリプトエンジンに外注した方が楽だな
177デフォルトの名無しさん:2007/05/22(火) 17:22:57
UIもOpenGLやDirectX使うのが今の流れ
178デフォルトの名無しさん:2007/05/22(火) 17:40:55
CUIでも?
179デフォルトの名無しさん:2007/05/22(火) 17:42:35
CUI自体が今の流れじゃないだろw
180デフォルトの名無しさん:2007/05/22(火) 19:32:04
>>177
cairo使うのが今の流れ。
181デフォルトの名無しさん:2007/05/22(火) 22:23:34
GUIはズールで
182デフォルトの名無しさん:2007/05/22(火) 22:28:02
2;\cGDI;y5u/90%.e/)4tu@jxf,/4x/d0-:/y/?
183デフォルトの名無しさん:2007/05/23(水) 13:05:03
c++と組み合わせて使うのに便利なGUIってなんだろ
c++である必要もないんだよね
184デフォルトの名無しさん:2007/05/23(水) 18:24:36
ATL+WTL
185デフォルトの名無しさん:2007/05/23(水) 20:18:40
CUIに2本毛が生えたのがGUI
186デフォルトの名無しさん:2007/05/23(水) 20:30:57
C++/CLI


・・・ってすでに C++ じゃないか。
187デフォルトの名無しさん:2007/05/23(水) 22:11:11
GUIと一口にいっても、グラフィックをバリバリ使うようなソフトは
やはりC++でないと処理が追いつかないこともあるから使われるだろう。
そうでない伝票入力とか在庫管理とかのオーダーメイドアプリは
もはや完全にWebに移行している。
もっともユーザインターフェースが最新のWebでも、
データベース入出力はいまだにCOBOLが使われたりするところもあるわけだが。
188デフォルトの名無しさん:2007/05/23(水) 22:12:29
まあboostを使うような人はそういう売り物ソフトとはまったく無縁の人たちだろうけど
189デフォルトの名無しさん:2007/05/23(水) 22:19:22
基幹にはやはりCOBOLを選ぶ by 不治通
190デフォルトの名無しさん:2007/05/23(水) 22:22:12
NECのACOSシリーズもCOBOLだよ
191デフォルトの名無しさん:2007/05/23(水) 23:46:49
Webアプリって紙の呪縛があるだろ。
帳票とかネックになんないの?
192デフォルトの名無しさん:2007/05/23(水) 23:48:31
Japanese OK.
193デフォルトの名無しさん: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
194デフォルトの名無しさん:2007/05/24(木) 10:17:42
訂正
#include <iomanip>
#include <boost/xpressive/xpressive.hpp>
の順でインクルードしておけば"static regex"いけました、無知でごめんなさい
195デフォルトの名無しさん:2007/05/24(木) 12:54:59
質問するならそれなりの書き方があるだろう。
〜ちゃうとか、orzとか、2chだからまともな書き方しなくていいと思ったら大間違いだ。
196デフォルトの名無しさん:2007/05/24(木) 12:58:16
べつに訊き方なんでどうでもいいと思うが。
気に食わない奴は答えなきゃいいんだし。
197デフォルトの名無しさん:2007/05/24(木) 13:08:51
僕は回答者をやってるつもりだから偉いんだぞお!

って言いたいだけだから華麗にスルーでいいよ
198デフォルトの名無しさん:2007/05/24(木) 13:59:38
マルチを毛嫌いしてるのとか、マルチは悪みたいな風潮もなんだかなーと思う。
なんか昔のfjみたいな堅苦しさを感じる。別に感謝されたくて返答してるわけじゃないんだし。
マルチ嫌いをスルーすりゃいいんだけど。
199デフォルトの名無しさん:2007/05/24(木) 14:03:51
いや、悪だろw
その自覚がないのはもっと手に負えないな。

どうしても複数箇所に投下したいなら、
その旨を記述しておくべき。
200デフォルトの名無しさん:2007/05/24(木) 14:43:57
>>198
おまえ fj で苛められてただろw
201デフォルトの名無しさん:2007/05/24(木) 20:02:15
NetNewsの場合は、
一つの記事を複数のグループにpostする機構があり、
ヘッダを見れば、他にどこのグループにもpostされていたか分かった。
メールのTo:のようにNewsgroups:に複数グループを記述できた。

この機構を使わず、個別にpostする行為のことをマルチポストと言ったから、
技術的に批判するだけの根拠があった。

豆知識な。
202デフォルトの名無しさん:2007/05/24(木) 21:02:10
>>198
お前、マルチがなんで嫌われるのか本質的なことを理解できてないだろ。
203デフォルトの名無しさん:2007/05/24(木) 21:14:07
スレ違いで伸びるウザさも理解して欲しいもんだがなぁ。

まぁ自分にだけ寛大なのはお互い様ではあるが。
204デフォルトの名無しさん:2007/05/24(木) 21:25:18
手広く書き込んだほうが回答を得られる確率が上がるのでインターネットリテラシーに優れているといえるでしょう。
205デフォルトの名無しさん:2007/05/24(木) 21:27:47
電柱一本に尋ね人のポスター貼るより
電柱百本に尋ね人のポスター貼る方が効果的
206デフォルトの名無しさん:2007/05/24(木) 21:44:38
合理的
207デフォルトの名無しさん:2007/05/24(木) 21:57:08
コスト対効果の問題
電柱一本に貼るのと電柱百本に貼るのとで、は前者の方が経済的
208デフォルトの名無しさん:2007/05/24(木) 22:28:49
電柱全部が自分の自由にして良いものだと思ってるのが間違い。
209デフォルトの名無しさん:2007/05/24(木) 23:24:56
電柱全部が自分の自由にして良いものだと思ってると思ってるのが間違い。
210デフォルトの名無しさん:2007/05/24(木) 23:28:45
スレ違い
211デフォルトの名無しさん:2007/05/25(金) 00:48:18
電柱に立ちションするとbootsが汚れるからやめような
せめて座りション
212デフォルトの名無しさん:2007/05/25(金) 00:56:41
電柱にウンコしちゃだめだからね
213デフォルトの名無しさん:2007/05/25(金) 09:50:03
boostのいい日本語リファレンスマニュアルがないので、
wikiを作ろうと思うんですが、作ったら書き込んでくれるひといますか?
214デフォルトの名無しさん:2007/05/25(金) 10:04:24
俺が個人的に使ってる誤訳抜け満載のを張ってやるよ
215デフォルトの名無しさん:2007/05/25(金) 11:52:56
>>213
新しく始めるより、翻訳プロジェクト進めてくれよ。
216デフォルトの名無しさん:2007/05/25(金) 12:39:30
翻訳プロジェクトはどこにあるんですか?
217デフォルトの名無しさん:2007/05/25(金) 12:45:16
>>216
>>1
http://boost.cppll.jp/

崩壊気味だけど。
218デフォルトの名無しさん:2007/05/25(金) 13:19:13
こんだけライブラリの数が多けりゃ
翻訳プロジェクトとか途中で頓挫するに決まってる
219デフォルトの名無しさん:2007/05/25(金) 13:22:50
一対一対応の翻訳を目指すから挫折する
俺の書いたprogress displayの訳なんて一行だぞ一行
220デフォルトの名無しさん:2007/05/25(金) 13:23:47
だからプロジェクトにするんじゃなくてwikiにすればいいんだよ
221デフォルトの名無しさん:2007/05/25(金) 15:46:53
まスパムが未来永劫無くならない事から見てもマルチの効率はいいんでしょ。
222デフォルトの名無しさん:2007/05/25(金) 16:39:17
wiki作ってみました。
http://wikiwiki.jp/boostref/
223デフォルトの名無しさん:2007/05/25(金) 17:09:16
pythonでGUI
Boost.pythonでc++と結合
224デフォルトの名無しさん:2007/05/25(金) 17:17:42
で、pythonのGUIライブラリって何よ?
となって振り出しに戻る。
225デフォルトの名無しさん:2007/05/25(金) 17:19:46
ptgtkとか、pyqtとか
226デフォルトの名無しさん:2007/05/25(金) 17:20:46
wxPython一択じゃね?
227デフォルトの名無しさん:2007/05/25(金) 19:06:35
90%くらいのパソコンはMFCが動くんでないの?
228デフォルトの名無しさん:2007/05/25(金) 19:48:27
個人的にはMediaWikiのほうが慣れているから
こっちの乗っ取りでいいじゃないかと思った
http://www.cppll.jp/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8
229デフォルトの名無しさん:2007/05/25(金) 20:57:09
そこはεπιστημηが管理人じゃねえか。
今はなきCマガジンのそいつの連載を知ってるが、
無知で無教養でネタもつまらん、最低の連載だったぞ。
さらにロリ系のエロ漫画家と交友関係があって、そいつの絵をCマガジンにも載せたほどだ。
Cマガジンが廃刊になったのはこいつのせいだ。俺は絶対許せん。
230デフォルトの名無しさん:2007/05/25(金) 21:03:00
はいはい そういうのはよそでやってくれ
http://pc11.2ch.net/test/read.cgi/tech/1091350633/
231デフォルトの名無しさん:2007/05/25(金) 21:14:26
>>229

あーあ
また博之の名誉毀損の賠償額が増えちゃったよw
232デフォルトの名無しさん:2007/05/25(金) 22:27:35
>>229
*.cppll.jp の管理人は tietew だぞ。
233デフォルトの名無しさん:2007/05/25(金) 23:07:43
επιστημηって紀元前のεπιστημηのこと?
やっぱり違う?
234デフォルトの名無しさん:2007/05/25(金) 23:13:26
紀元前の奴がまだ生きてるわけないじゃん
235デフォルトの名無しさん:2007/05/26(土) 07:49:15
>>229
エロ漫画家と知り合いなのはエピステーメじゃなくフィンローダの方だぞ。
まあどっちもCマガの記事はつまらんかったが。
236デフォルトの名無しさん:2007/05/26(土) 08:09:52
おまえらカウントクラスをバカにすんな
237デフォルトの名無しさん:2007/05/26(土) 08:30:15
>>222
今filesystemが書かれているけど
pathではなくbasic_pathにしたほうがいいと思う
238デフォルトの名無しさん:2007/05/26(土) 08:36:28
wikiなんだから自分で直せば?
239デフォルトの名無しさん:2007/05/26(土) 08:41:25
229の誰かトップに貼れよ
240デフォルトの名無しさん:2007/05/26(土) 08:42:56
記事名を変える方法がわからん。
ってすまん、今名前変更に気が付いた。
241デフォルトの名無しさん:2007/05/26(土) 08:44:05
で、変更しようとしたら管理者パスワードを要求された
やっぱり俺にはできないようだ
242デフォルトの名無しさん:2007/05/27(日) 01:53:30
243デフォルトの名無しさん:2007/05/27(日) 23:00:04
>>242
さすがにちっと古くねえか?
244デフォルトの名無しさん:2007/05/29(火) 03:42:14
初歩的な質問で申し訳ありません。
lambdaに条件演算子に相当するものはありますか?
以下のようなファンクタをさくっと書く方法を知りたいです。

struct MyFunctor : public unary_function<bool, const char*>
{
 const char* operator()(bool x) { return x ? "YES" : "NO"; }
}
245デフォルトの名無しさん:2007/05/29(火) 04:12:32
>>244 if_then_else_return(_1, "YES", "NO")
246244:2007/05/29(火) 11:36:46
ありがとうございました。
247デフォルトの名無しさん:2007/05/29(火) 20:50:28
$ cat ./test.cpp && g++ test.cpp && ./a.out
#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の内容が異なってくるのですがこれはしょうがないんですかね
このへんの解説ページなんかあれば教えていただけるとうれしいのですが
248デフォルトの名無しさん:2007/05/29(火) 21:34:39
思いっきり/9で割ってるやん
249デフォルトの名無しさん: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
       \|_,..-┘

250デフォルトの名無しさん:2007/05/29(火) 22:51:37
>>247
なんだこれ…
lambdaはデフォルトで定数項を参照で保存するのか。
constantで回避できるけど、なんでこうなってるんだろ。
251デフォルトの名無しさん:2007/05/30(水) 00:41:06
>247
>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 と同じになる。
252247:2007/05/30(水) 03:18:16
>>250,251
よくわかりました
有難うございます
253デフォルトの名無しさん:2007/05/30(水) 09:04:50
STLってさbegin (), end ()とか渡さなくても
上記のメンバ関数有るの分かってるんだから
クラスのポインタ受けとりゃいいんじゃないの
254デフォルトの名無しさん:2007/05/30(水) 09:09:21
>253
組み込み配列を渡したくなったときのことを考えてみよう
255デフォルトの名無しさん:2007/05/30(水) 09:50:03
>>253
boost::rangeがまさにそれをやってる。

>>254
既存のコンテナの一部を渡すのもそうだな。
256デフォルトの名無しさん:2007/05/30(水) 10:23:45
>>253
オブジェクトへのポインタの間違い?

開始点と終了点を渡すiterator式のインターフェースの方がずっと汎用性がある。
例えば、途中から渡したい場合、
iteratorを持たない集合型オブジェクト上のiteratorを自前でつくる場合、
変換iteratorを使う場合など。

この辺の議論は20〜30年前に決着済みです。
257デフォルトの名無しさん:2007/05/30(水) 10:34:58
>>256
コンテナがあればイテレータふたつは簡単に手に入るし、
イテレータがふたつあればそれを仮想的なコンテナとみなせるから、
コンテナとイテレータのどっちを基準にしても汎用性は変わらないだろ。
むしろ、利便性の問題。
258デフォルトの名無しさん:2007/05/30(水) 10:42:52
>>255
> 既存のコンテナの一部を渡すのもそうだな。

などの利便性は、汎用性と言ってもいいのではないでしょうか。
259デフォルトの名無しさん:2007/05/30(水) 11:02:56
2つのイテレータを引数に取る関数のラッパとしてコンテナの参照を引数に取る関数を作るのは容易だが、その逆はそうはいかない。
260デフォルトの名無しさん:2007/05/30(水) 11:08:07
突っ込みやすい話題だとレスがいっぱい付くね
261デフォルトの名無しさん:2007/05/30(水) 16:08:43
>>256-259
するとrangeの存在意義は?

というわけで
>>253
range_ex
262デフォルトの名無しさん:2007/05/30(水) 17:32:06
関数オーバーロードできるんだから
両方用意しとけばいいんだよな
263デフォルトの名無しさん:2007/05/30(水) 18:15:04
まーJAVAやVC、BCCのクラスライブラリと違って浅い抽象化だから。
264デフォルトの名無しさん:2007/05/31(木) 01:46:46
C++の試験ってあったけか?
265デフォルトの名無しさん:2007/05/31(木) 06:29:43
boostってネットワーク系ある?
266デフォルトの名無しさん:2007/05/31(木) 07:17:25
asio
267デフォルトの名無しさん:2007/05/31(木) 13:03:43
268デフォルトの名無しさん:2007/05/31(木) 22:08:42
双方向リストに対してboostのregexを使いたいのですが、どうやったらいいんでしょうか。
BidiIteratorを自分で実装すればできるっぽいのですが、よくわかりません。
誰か教えてください。
269デフォルトの名無しさん:2007/05/31(木) 23:18:04
何が分からないのか分からないって状態みたいだから、
まずはiteratorについて学ぶよろし。
270デフォルトの名無しさん:2007/05/31(木) 23:21:52
イテレータはだいたい分かっているつもりです。
std::listなんかでよく使うので。
271デフォルトの名無しさん:2007/05/31(木) 23:32:09
BidirectionalIteratorの実装法が分からんってこと?
272268:2007/05/31(木) 23:47:32
たとえば、
struct node{
  char c;
  node *prev, *next;
}
というノード構造体のリストで構成された文字列があるとして、
これに対してboostのregexを使うにはどうすればいいのかということです。
273268:2007/06/01(金) 00:00:33
272のような構造体ではなくて、std::list<char> に対してregexを使う方法でもいいです。
274デフォルトの名無しさん:2007/06/01(金) 00:04:48
std::list<char>::iterator ????
275デフォルトの名無しさん:2007/06/01(金) 00:18:45
きちんとやろうとすると長くなるので要点だけ。
struct 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), ...
276デフォルトの名無しさん:2007/06/01(金) 00:19:48
書いている間に…

>>273
それなら、
std::list<char> l;
regex_search(l.begin(), l.end(), ...

でいけるはず。
277268:2007/06/01(金) 00:27:11
どうもありがとうございます。
こんな長いコードまで書いていただいて恐縮です。
278デフォルトの名無しさん:2007/06/01(金) 00:40:26
>>275
Boost.Iteratorsは?
279デフォルトの名無しさん:2007/06/01(金) 00:53:07
regexは文字列に対して使うんだよ。
280デフォルトの名無しさん:2007/06/01(金) 20:10:11
文字はcharかwchar_tしか使えないけど、
文字列のデータ構造はイテレータさえ実装すれば自由だよ。
281デフォルトの名無しさん:2007/06/02(土) 14:52:12
using namespace boost:lambda;
boost::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です。
282デフォルトの名無しさん:2007/06/02(土) 21:20:26
boostをインストールする場所なんですが
linuxだったら,
/usr/local/include
にboostおけばいいのかな

まだboostに正式にacceptされてないのは
/usr/local/share/include
あたり?
283デフォルトの名無しさん:2007/06/02(土) 21:28:03
Linuxだったらrpm様の言う通りw
284デフォルトの名無しさん:2007/06/02(土) 21:46:02
RHEL5なのでrpmないんです
285デフォルトの名無しさん:2007/06/03(日) 00:13:20
RHELならサポートに電話
286デフォルトの名無しさん:2007/06/03(日) 21:32:16
まぁ確かにその為に金払ってるんだしな
287デフォルトの名無しさん:2007/06/05(火) 01:56:29
Fedora の rpm を使えば良い
288デフォルトの名無しさん:2007/06/06(水) 12:53:31
>>287
まじで使えるの?
289デフォルトの名無しさん:2007/06/06(水) 12:54:44
たいてい使えるよ
290デフォルトの名無しさん:2007/06/06(水) 18:20:45
使えなかったら、rpmbuildするとか。
いろいろあるだろ
291デフォルトの名無しさん:2007/06/19(火) 12:06:13
MFCのTRACEのようなものはboostにありませんか?
292デフォルトの名無しさん:2007/06/22(金) 01:59:52
Boostで一番高速なアロケータは何よ?
293デフォルトの名無しさん:2007/06/22(金) 02:37:51
シングルスレッド版のpool
294デフォルトの名無しさん:2007/06/22(金) 02:55:08
>>293
d
試してみる
295デフォルトの名無しさん:2007/06/22(金) 09:30:31
>>291
boost.formatを使って、
assert(cerr << (format("value = %d") % value) << endl);
とかじゃだめなん?
296デフォルトの名無しさん:2007/06/22(金) 19:22:42
テンプレート関数で引数として渡されたものがdelete演算子の引数に出来るかどうかを
concept_checkで保障したいわけなんですが
「delete演算子の引数に出来る」ってことのconceptってありますかねぇ?
297デフォルトの名無しさん:2007/06/22(金) 19:32:15
すいません速攻自己解決しました><
そのためのconcept作ってやれば良いんですね(汗
298デフォルトの名無しさん:2007/06/22(金) 19:59:06
場合によるけど、不完全型のdeleteを認めないようにすることも考えたほうがいいよ
299デフォルトの名無しさん:2007/06/22(金) 20:47:34
shared_ptrかなにかでそれチェックしてなかったっけ
300デフォルトの名無しさん:2007/06/22(金) 21:12:20
checked_deleteを使っているはず
301デフォルトの名無しさん:2007/06/23(土) 15:45:18
sandboxも含めたら(含めなくてもだけど^^^)とてもじゃないけど全部使いこなせる気にはなれないぜ…
302デフォルトの名無しさん:2007/06/23(土) 21:09:17
自分が必要なものが使いこなせればいいんじゃないの

といいつつspirit使ってコンパイルエラーになると右往左往する俺
303デフォルトの名無しさん:2007/06/26(火) 01:47:20
すみません、質問です。

boost::lambdaで、PODな構造体のメンバ変数へアクセスする方法はありますか?
具体的には、以下のような構造体があるときに、

struct MyPOD {
 int foo;
};

以下のような感じのファンクタを書きたいのです。

_1::foo += 1

どうか宜しくご教示願います。
304デフォルトの名無しさん:2007/06/26(火) 02:28:10
>>303
bind(&MyPOD::foo, _1) += 1
305デフォルトの名無しさん:2007/06/26(火) 02:33:26
( &_1 ->* &POD::foo ) += 1
というような手もあるが、どうみてもbindの方が分かりやすいですね本当に(ry
306デフォルトの名無しさん:2007/06/26(火) 04:26:32
boost::filesystem って wchar_t 扱えるように仕様変更になったんだっけ?
http://boost.cppll.jp/HEAD/libs/filesystem/doc/faq.htm#wide-character_names
みてると narow char しかサポートしないよ、へっ、って。
開発してる人に心境の変化があったの?
307デフォルトの名無しさん:2007/06/26(火) 07:11:21
>>306
そりゃいくらなんでも情報源が古すぎるわ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
308デフォルトの名無しさん:2007/06/26(火) 09:04:07
>>307
おお、ありがとう。
ところで、boost::filesystem::path を使うと
Visual Studio 2005 の IntelliSense が
UnintelliSense になっちゃうんだけど、
これはどうしようもない??

IntelliSense が無いと生きていけない体になっちゃった。
309デフォルトの名無しさん:2007/06/26(火) 09:11:32
ヘッダをプロジェクトに加えれば結構効くようになるお
310デフォルトの名無しさん:2007/06/26(火) 09:13:02
lambdaとかつかうとintelisenceどころじゃないが、一応どうしても使いたいってんなら
そういう時はいったん終了して*.pdbを削除して開きなおせばまた認識してくれるようになるよ
311デフォルトの名無しさん:2007/06/26(火) 09:24:12
*.ncbでしょ
経験上、これを消しても効果ないことが多い
で、>>309のような結論に至った
312デフォルトの名無しさん:2007/06/26(火) 09:30:57
ほうほうなるほろ
書いたヘッダを自動的にプロジェクトに取り込むようなマクロ使えば自動化もできるし、俺も使ってみるよ
313デフォルトの名無しさん:2007/06/26(火) 10:04:41
omaera shinsetsu desu ne.
314デフォルトの名無しさん:2007/06/26(火) 10:36:28
だ、だめだぁ
ヤパーリ UnintelliSense ダターヨ(笑
315デフォルトの名無しさん:2007/06/26(火) 13:30:33
boost::progress_display ってなくなっちゃうの?
316デフォルトの名無しさん:2007/06/26(火) 13:36:52
それは困るなあ(笑)
317デフォルトの名無しさん:2007/06/26(火) 13:43:56
std::map<int, int> m;
    :
std::for_each(m.begin(), m.end(), /* */);

boost lambdaでmap各要素のsecondに定数を代入したいのですが
どのようにしたらいいのでしょうか?
vectorだったら _1 = N でいいのですが、mapだとstd::pair<const int, int>なのでどうしたらいいのかわかりません。
318デフォルトの名無しさん:2007/06/26(火) 15:32:32
( bind(&std::pair<int,int>::first, _1) = 0 )
これでいけるはずだけどconst intからint&に変換できないとかぬかしやがる
もし可能だとしてもconstはずしとか参照作成とか面倒そうなので
素直に関数オブジェクト自作してやった方が楽っぽい
319デフォルトの名無しさん:2007/06/26(火) 15:49:09
志村ー、second,second!!!
320デフォルトの名無しさん:2007/06/26(火) 15:57:18
アッー!!えらい勘違いしてたごめんだぜ
とりあえずこれでできるっぽい

std::for_each(m.begin(), m.end(), ( bind(&std::pair<const int,int>::second, _1) = 0 ) );
321317:2007/06/26(火) 16:15:44
>>320
ああ、メンバ変数へのポインタ使うんですね。
でも…なんかパッと見分かりづらくて…微妙ですね。
ありがとうございました。
322デフォルトの名無しさん:2007/06/26(火) 17:11:03

  map 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でもしてシンプルに記述できるかもしれんが
いまいち使いどころが分かりにくいライブラリだ…
323デフォルトの名無しさん:2007/06/26(火) 17:56:21
pair の型は map::value_type でとれますよ。
ちょっとだけ端折れる。
324デフォルトの名無しさん:2007/06/26(火) 20:58:29
boost::filesystem::pathのマルチバイト対応予定ってないの…?
wpath使えって事なのか?
325デフォルトの名無しさん:2007/06/26(火) 21:07:31
boostがというよりC++自体がマルチバイト文字列を
直接いじくることを考慮していない感じ。
326デフォルトの名無しさん:2007/06/26(火) 21:28:21
世の中も何だってUnicodeにすればおkという風潮だしな
327デフォルトの名無しさん:2007/06/26(火) 22:09:53
BOOST_FOR_EACH
じゃいかんの?
328デフォルトの名無しさん:2007/06/26(火) 22:25:45
なんとなくlambdaが使いたい気分なんでw
329デフォルトの名無しさん:2007/06/27(水) 10:10:58
range_exって何故sandboxから出せないの?
何か問題があるのかな?

早く使いたいんだけど、sandboxのを仕事で使うのは微妙だしなぁ。
330デフォルトの名無しさん:2007/06/27(水) 10:15:08
どうせ内部でboost::begin(container), boost::end(constainer)を呼びだして
stlアルゴリズムを適用するもの書くんだからsandboxだからと言って避ける必要ないジャンとか思うけど
そこはややこしい内部仕様の思わぬ罠とか恐れての事なんだろうね
331デフォルトの名無しさん:2007/06/28(木) 02:54:58
#include <valarray>
//#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使うのが間違いってことなんでしょうか?
332デフォルトの名無しさん:2007/06/28(木) 03:35:08
valarrayで使うという発想はなかった……
明日試してみよう。今日は寝る。
333デフォルトの名無しさん:2007/06/28(木) 17:08:54
valarrayにはbeginとendがないからね。
大域名前空間でいいから自分でbeginやendを定義すればいいと思う。
あとvectorみたいに要素の連続性の保証がないなら、
自前でイテレータを書いてやるのが移植性向上のためにはいいかもしれない。
334デフォルトの名無しさん:2007/06/29(金) 20:29:45
StateChartは使いどころが今ひとつわかんね

アレのお世話になるほど状態遷移が複雑になるならむしろ
専用のツール作って(あるいはExcel使うとか)そのツールからコードジェネレート
した方が早いんじゃないかと思ったりする


ひょっとして実はすごく多機能なんだろうか・・・
335デフォルトの名無しさん:2007/06/29(金) 20:50:32
>>333
valarray は要素の連続性を保証してるみたいだよ。

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 が成り立つ。
336デフォルトの名無しさん:2007/06/29(金) 23:37:34
>>334
(゚Д゚)ハァ?
337デフォルトの名無しさん:2007/06/30(土) 00:00:23
意味がわからんならスルーしろよ
338デフォルトの名無しさん:2007/06/30(土) 17:42:13
>>334
Boost.FSM がレビュー待ち
339デフォルトの名無しさん:2007/06/30(土) 17:57:26
一瞬フライングスパゲティモンスターに見えた
有限状態機械だった
340デフォルトの名無しさん:2007/06/30(土) 19:21:15
uBlasってboostの標準ライブラリですか?
341デフォルトの名無しさん:2007/06/30(土) 19:52:52
そうだお
342デフォルトの名無しさん:2007/07/01(日) 14:56:36
そそ。依存してるヘッダをプロジェクト内に突っ込んどくとそこそこインテリ化するよね。
343デフォルトの名無しさん:2007/07/01(日) 14:57:45
うわ、誤爆したorz
344デフォルトの名無しさん:2007/07/01(日) 16:45:56
>>342
そそって言うの止めろよ。気持ち悪い
345デフォルトの名無しさん:2007/07/01(日) 17:50:18
そそそ
346デフォルトの名無しさん:2007/07/01(日) 17:54:36
どうだっていいだろ
せめてプログラムの事で絡めよ気持ち悪い
347デフォルトの名無しさん:2007/07/01(日) 18:20:51
やっぱりvalarrayの(賢い方法での)range対応化は無理でした…
そもそもこれSTLコンテナのインターフェースじゃないんですよね
range関数やrangeイテレータの特殊化が組み込み型一つ一つの場合において特殊化していくような
強引なやり方でしか出来ませんでした><(といっても組み込み型に対してしか使えないから問題なさそうだけど)
348デフォルトの名無しさん:2007/07/01(日) 20:02:26
部分特殊化できないの?
349デフォルトの名無しさん:2007/07/03(火) 01:08:17
部分特殊化ってカリー化みたいだな・・・
350デフォルトの名無しさん:2007/07/03(火) 21:22:26
だからなに
351デフォルトの名無しさん:2007/07/04(水) 00:03:09
無性にカレーを食いたくなってきた
352デフォルトの名無しさん:2007/07/04(水) 00:09:57
日本印度化計画が脳裏に
353デフォルトの名無しさん:2007/07/04(水) 02:11:29
低所得者域は既にインド化済み。
雇用形態は真逆だがな。
354デフォルトの名無しさん:2007/07/04(水) 16:09:21
>>353
日本じゃ所得に関わりなく奥さんがお弁当とどけてくれたりしないですよ
355デフォルトの名無しさん:2007/07/04(水) 20:08:58
サリーさんのような嫁が欲しい
356デフォルトの名無しさん:2007/07/04(水) 20:55:27
>>349
むしろカリー化を型志向言語で体現する手法がテンプレートなんじゃないのか
357デフォルトの名無しさん:2007/07/04(水) 22:44:35
>>349>>356
全くの見当違いですので。
358デフォルトの名無しさん:2007/07/05(木) 00:38:36
>>349>>356
テンプレートでは引数の数は変わりません。
359デフォルトの名無しさん:2007/07/05(木) 13:47:10
カリー化と引数の数は関係ないんじゃ?
360デフォルトの名無しさん:2007/07/05(木) 15:38:09
関係あるだろ。自由変数が引数になる。
>>349は全くの逆だが。
361デフォルトの名無しさん:2007/07/05(木) 18:40:45
boost::ublasのmatrixって、宣言と同時に初期化できないの?
いちいち

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.
362デフォルトの名無しさん:2007/07/05(木) 18:50:26
mat =
  1 = 2 = 3 =
  4 = 5 = 6 =
  7 = 8 = 9;

みたいなのは作ろうと思えば作れそうだな。
363デフォルトの名無しさん:2007/07/05(木) 21:21:08
>>362
明らかに実装不可能な = を例に出すようなおまえにゃムリだな。
364デフォルトの名無しさん:2007/07/05(木) 21:35:22
= は右結合だったな・・・。
<< でいいや。
365デフォルトの名無しさん:2007/07/05(木) 21:51:23
右結合云々以前にoperator=はクラス外部で宣言できないから
366デフォルトの名無しさん:2007/07/05(木) 21:58:07
せめてboost::assignみたいにmatrix_list_of(1,2,3)(4,5,6)(7,8,9)
ってできればいいんだけど
367デフォルトの名無しさん:2007/07/06(金) 13:04:57
ttp://sheepman.sakura.ne.jp/diary/?date=200605

#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でできるかどうかはわからんけど
368デフォルトの名無しさん:2007/07/06(金) 13:23:22
>>365
誰もクラス外部での話に限定してなかったけどな。
369デフォルトの名無しさん:2007/07/06(金) 17:57:06
こんなの書いてみた
template <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が欲しいところ
370デフォルトの名無しさん:2007/07/06(金) 18:14:44
最適化なら・・・最適化ならきっとなんとかしてくれる・・・!!
371デフォルトの名無しさん:2007/07/07(土) 06:39:39
Visual Studio 2005 で IntelliSense がきかねぇよ・・・
しかも特定のライブラリ使ったときに顕著。
っていってたやつですが、using 使うと結構回避できるんですね。

boost::filesystem::path とか boost::spirit::file_iterator とか
がそれなんですが、 using boost::filesystem::path するとか
using filesystem=boost::filesystem すると IntelliSense が
効くみたい。
372デフォルトの名無しさん:2007/07/07(土) 09:40:53
>>371
へぇーやってみよ
373デフォルトの名無しさん:2007/07/07(土) 17:38:23
二版出るって。タプルのために買おうかな。
ttp://www.kmonos.net/pub/BoostBook/
374デフォルトの名無しさん:2007/07/07(土) 17:44:38
いつの間にか、circular_bufferが削除されてる……?
ttp://svn.boost.org/trac/boost/changeset/4154

一体何があった?
375デフォルトの名無しさん:2007/07/07(土) 21:07:13
>>373
おお。
あれから(初版)だいぶboostも進化したし、時代遅れになってたから
そろそろ新しく書いてくれないかと思ってたところなんだ。
これは買おう。
376デフォルトの名無しさん:2007/07/07(土) 21:14:27
boostそのものより、その実装に使ってる技術(とその理由)を解説したものってないのかなぁ

shared_ptrのchecked_delete
でさえ何でこんな事してんの??

とさんざん悩んだよ
よく読むとドキュメントに書いてあったけど、書いてないものもあるし・・・
377デフォルトの名無しさん:2007/07/07(土) 21:23:54
ああ、確かにそういう本欲しいなあ。
boostを題材にModern C++みたいなことをしてくれる本
378デフォルトの名無しさん:2007/07/07(土) 23:03:17
そんなニッチな本売れねーよ
379デフォルトの名無しさん:2007/07/07(土) 23:23:43
俺も欲しいけどなあ、そんな本。
使い方の解説はWeb上にたくさんあるけど、仕組みまで解説したところはほぼ皆無だし。
380デフォルトの名無しさん:2007/07/07(土) 23:44:10
C++の本自体もうあまりでねーだろうが・・・
381デフォルトの名無しさん:2007/07/07(土) 23:44:38
382デフォルトの名無しさん:2007/07/07(土) 23:47:18
方向性がどんどんマニアックになってるからね。
素人向けしない仕様・思想がてんこもり
383デフォルトの名無しさん:2007/07/08(日) 04:21:56
いわゆる Smalltalk 系の OOP が好きな奴は
C# とか Java とか Ruby でいいと思うよ。

C++ はどんどんマニアックになってほしい。
384デフォルトの名無しさん:2007/07/08(日) 05:27:34
>>373
秀和の本って紙が厚くない?
もちっと薄い紙にしてほしいけど単価高いのかなぁ。
385デフォルトの名無しさん:2007/07/08(日) 06:48:21
最近のコンパイライには tr1 名前空間以下にいろいろと
用意されているの?
386デフォルトの名無しさん:2007/07/08(日) 07:00:42
お化けのqueue太郎が復刊されるらしいね
387デフォルトの名無しさん:2007/07/08(日) 07:41:18
blogに内部構造の話書こうかと思ったけど、
解読している時間が少なくなってしまってもったいないんだよね。
持続してblogに技術話書き続けている人って本当にすごい。
388デフォルトの名無しさん:2007/07/08(日) 07:50:52
>>387
自分のメモ程度の物でいいんじゃないの?
そういうサイトも結構役に立つんだよね、暗中模索しちゃったときとか
389デフォルトの名無しさん:2007/07/08(日) 14:50:10
ニヤッっとした
390デフォルトの名無しさん:2007/07/10(火) 12:20:56
>>373
気がついたらLet's Boostの内容も更新されてるな
391デフォルトの名無しさん:2007/07/10(火) 20:59:38
TR2もboost関連なの?
392デフォルトの名無しさん:2007/07/10(火) 21:28:39
恐らくboostが一番早いだろう
なんたってboostだから
393デフォルトの名無しさん:2007/07/10(火) 21:33:02
じゃあ次期次期ライブラリはboooostだな
394デフォルトの名無しさん:2007/07/10(火) 21:44:04
検索結果じゃあるまいし
395デフォルトの名無しさん:2007/07/10(火) 22:26:13
ヘッダが増えるほどoが増えるのか?
396デフォルトの名無しさん:2007/07/10(火) 22:29:26
boooooooooostよりは増えないんだぜ?
397デフォルトの名無しさん:2007/07/10(火) 22:33:59
正直、ロゴの文字数が増えて、それが各ページに対応しているってインターフェースはどうかと思った
398デフォルトの名無しさん:2007/07/11(水) 00:21:52
boost::ptr_vectorにはコピーコンストラクタやoperator=が無いようですが
どういう理由でコピー不可になってるのですか?
399デフォルトの名無しさん:2007/07/11(水) 00:32:25
goooogle
400デフォルトの名無しさん:2007/07/11(水) 00:37:26
多分内部でMovePtrなんか使ってるからだお
401デフォルトの名無しさん:2007/07/11(水) 00:38:52
>>398
全ての要素がboost::ptr_vectorのデストラクタでdeleteされるから。
つまり管理の最適化のためにboost::ptr_vectorがすべてのオブジェクトの所有権を独占してる。
だからコピーで二重にオブジェクトを所有できたらおかしいだろ?
402デフォルトの名無しさん:2007/07/11(水) 00:51:22
>>401
ポインタだけをコピーするのがダメなら、全ての要素をnewしてコピーするという実装もアリだと思うんだが
そうしない理由もあったりするんかな?
403デフォルトの名無しさん:2007/07/11(水) 01:10:26
安全なclone()が実装されてるとは限らないじゃない
404デフォルトの名無しさん:2007/07/11(水) 01:16:45
しかし安全なclone()が実装されているとしよう
405デフォルトの名無しさん:2007/07/11(水) 01:39:51
class Base {
protected:
  ~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です。
406デフォルトの名無しさん:2007/07/11(水) 01:43:10
407デフォルトの名無しさん:2007/07/11(水) 02:04:30
>>406
ありがとうございます。
ググって見たらわかり易い解説ページがありました。
http://www.zeroscape.org/cgi-bin/wiki/wiki.cgi?page=shared_ptr+minor+features

しかしこういうのを見るとやはりboostは変態的だなと思う。
408デフォルトの名無しさん:2007/07/11(水) 09:21:29
>>407
うむむ、boost::shared_ptr<void> 恐るべし。
409デフォルトの名無しさん:2007/07/11(水) 12:20:00
boost::shared_ptr<boost::any>
410デフォルトの名無しさん:2007/07/11(水) 13:04:01
boost::any って当然 typeinfo 使うことが前提ですよね?
というか、boost 全般にわたって RTTI がつかえることが
前提として設計されているんでしょうか?
411デフォルトの名無しさん:2007/07/11(水) 13:50:07
RTTIが使えなければC++ではない
412デフォルトの名無しさん:2007/07/11(水) 15:25:26
>>411
そ、そんなぁ〜〜〜
413デフォルトの名無しさん:2007/07/11(水) 21:56:39
>>410
anyは流石にRTTIなしではまともに使えないけど。
shared_ptrやfunctionなどはRTTIなしで実装されていると思う。
例えそうでなくてもRTTIを使わない実装なんて容易に作れるし。
414デフォルトの名無しさん:2007/07/11(水) 22:14:12
じゃあ作ってみて
415デフォルトの名無しさん:2007/07/11(水) 22:48:33
boost::variant使えよ
416デフォルトの名無しさん:2007/07/11(水) 23:28:28
RTTIなしで実装できるものが増えたらそれをRTTI代わりのライブラリにまとめればいいんだ
そしてそれを標準化すればそれがRTTIに
417デフォルトの名無しさん:2007/07/11(水) 23:35:00
spirit使ってる人いますか?
418デフォルトの名無しさん:2007/07/11(水) 23:40:19
>>410
されてません。
419デフォルトの名無しさん:2007/07/12(木) 01:11:01
>>414
こうですか?わかりません><
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4595.txt
まじめな話、例外安全の観点からまずいとこがあったら教えてください。
420デフォルトの名無しさん:2007/07/12(木) 16:58:04
>>417
いりません
421デフォルトの名無しさん:2007/07/12(木) 20:04:29
>>419
struct 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;

ここまで見て、間違ったプログラムだと判明したので見る気なくした。
422デフォルトの名無しさん:2007/07/12(木) 20:43:11
カウンタ共有しないのかよ
423デフォルトの名無しさん:2007/07/12(木) 23:44:23
Preprocessor読んでるんだが、
MSVC向け条件コンパイルの理由が分かる香具師いる?

# 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
424デフォルトの名無しさん:2007/07/12(木) 23:58:40
ブートキャンプスレと聞いてやってきました
425デフォルトの名無しさん:2007/07/13(金) 00:42:16
426デフォルトの名無しさん:2007/07/13(金) 00:55:44
>>423
条件コンパイルをしてるのはVCのプリプロセッサが腐ってるからだが、
どのように腐ってるか知りたいってこと?
427デフォルトの名無しさん: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";
}
428デフォルトの名無しさん:2007/07/14(土) 00:08:10
>>427
tnx.
こっちも、やみくもにいろいろやってみたが、
引数付きマクロに展開されるマクロをネストしまくると、
展開しきれたり、しきれなかったり、法則がよく分からなかった。
コメントが無いのは説明が面倒過ぎるんだろうな。
VC8でも試したが、直ってなくて萎えた。
429デフォルトの名無しさん:2007/07/14(土) 10:33:52
というか、それはVCの場合、仕様になっている。
その振る舞いに依存しているシステム提供ヘッダが多すぎて直せない。
430デフォルトの名無しさん:2007/07/16(月) 11:44:25
へえー。
じゃあせめてプリプロセッサの挙動を互換モードと標準モードで切り替えられるような
pragmaディレクティブを用意して欲しいもんだな。
431デフォルトの名無しさん:2007/07/16(月) 11:51:26
いやコンパイルオプションにしてくれよ
432デフォルトの名無しさん:2007/07/16(月) 12:03:02
だからコンパイルオプションで一括にしちゃうと
_oooo.h とか xooo.h とかがシボーンしちゃうってことでしょ
433デフォルトの名無しさん:2007/07/16(月) 12:18:19
>>431
まるでわかってないな。
434デフォルトの名無しさん:2007/07/16(月) 12:35:48
定義時にどっちのモードかフラグ付けておいて、
選択的に展開しないと駄目だよな。
展開時にはシステム定義、ユーザ定義が混合しているから。
435デフォルトの名無しさん:2007/07/17(火) 00:59:05
Linux で以下のように release かつ dynamic のライブラリをビルドしようとすると
debug と static の組み合わせもビルドして大量のライブラリができるけど,どこが
間違っているでしょうか? Boost は 1.34.0 です。

./bjam --toolset=gcc --prefix=/usr/local -sBUILD="release <runtime-link>dynamic" --with-regex install
436デフォルトの名無しさん:2007/07/17(火) 01:26:03
>>435
Boost.BuildがV2になったんで-sBUILD消滅
<hoge>hageをhoge=hageにしてオプションとして渡せばおk
437デフォルトの名無しさん:2007/07/17(火) 12:04:59
>>436
ありがとうございます。
早速試してみます。
438デフォルトの名無しさん:2007/07/17(火) 23:42:25
↓remove_referenceのMSVC実装が極悪非道過ぎて吹いた

// This uses nice VC6.5 and VC7.1 bugfeature
439デフォルトの名無しさん:2007/07/18(水) 00:30:39
type_ofのVC7.1、VC8実装もみてみろ
440デフォルトの名無しさん:2007/07/18(水) 19:40:10
boost使いの人ってlispもマスターしてるんですか?
MPLが他の言語で生成されたと聞いて、ちょっと興味あるのですが
441デフォルトの名無しさん:2007/07/18(水) 20:24:37
使いこなせる人もいるだろうし、授業で習った程度の人もいるだろうし、名前だけは知ってるって人もいるだろう。
あまり意味のある質問とは思えん。

boostユーザを十把一絡げにしすぎ
442デフォルトの名無しさん:2007/07/18(水) 20:30:07
授業でboost!!
なんて大学だ、紹介してくれ
443デフォルトの名無しさん:2007/07/18(水) 20:31:03
Lispの話だろ。
444デフォルトの名無しさん:2007/07/18(水) 20:33:30
そうか、早とちりしてゴメソ
445デフォルトの名無しさん:2007/07/19(木) 00:44:34
Visual C++ 2005 Express EditionでSTLport-5.1.3と一緒にBoost1.34.0をビルドしようとしているのですがうまくいきません。

STLportの変更箇所は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;
}
446デフォルトの名無しさん:2007/07/19(木) 08:04:05
>>442
東大あたりの研究室サイトに学生向けboost解説ページがあった気がする。
授業でboost、遠くない日に来るのかも。
447デフォルトの名無しさん:2007/07/19(木) 11:01:44
javaはlispで生成できるけどc++は大変ってどこかに書いてあった気がする
なんで大変なんだろ
448デフォルトの名無しさん:2007/07/19(木) 12:38:02
別に普通の道具だから、授業で使っても変じゃないでしょ。
わざわざ「Boostの授業」とかあったら変わってるなと思うけど。
449デフォルトの名無しさん:2007/07/19(木) 12:39:59
まずはprogress_displayの使い方の講義から
450デフォルトの名無しさん:2007/07/19(木) 13:32:30
そんな講義受けてると将来rejectされるぞ
451デフォルトの名無しさん:2007/07/19(木) 13:44:47
STLのアルゴリズムよりboost::range_exのアルゴリズムの方が使いやすいよとか
生ポでなくスマポを使いましょう→STLにはauto_ptrがある→でもこれは色々と駄目→
だからboost::shared_ptr、weak_ptrを使いましょう
とか授業でも使えるネタも一杯あると思いまス
452デフォルトの名無しさん:2007/07/19(木) 19:11:08
mplの内部構造をマスターしないと単位が貰えません
453デフォルトの名無しさん:2007/07/19(木) 19:41:26
ビルドすらできていない445は落第決定
454デフォルトの名無しさん:2007/07/19(木) 20:42:02
>>445
bjam --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
455デフォルトの名無しさん:2007/07/19(木) 22:33:09
std::vector<std::string> vec;
boost::range_iterator< BOOST_TYPEOF(vec) > iteraor;
のように(これはエラーになりますが)
エンティティーから取得した型をテンプレート引数にしたいんですが方法はありますかね?
456デフォルトの名無しさん:2007/07/20(金) 07:54:26
multi_array のイテレータの使い方がわかんない。

multi_array<double, 2> array( extents[ 5 ][ 5 ] );
multi_array<double, 2>::iterator ite = array.begin();
cout << *ite;

で配列の要素を出力できるのかと思ったら、上手くいかなかった。
これどうやって使うものなんです?
457デフォルトの名無しさん:2007/07/20(金) 08:10:47
>>449-450
C++初心者むけの題材としては面白いんじゃないか?
458デフォルトの名無しさん:2007/07/20(金) 09:07:03
Formal Review で Accept されるまで単位は無しな
459デフォルトの名無しさん:2007/07/20(金) 09:30:51
>>447
妄想乙
460デフォルトの名無しさん:2007/07/20(金) 13:44:32
Boost Book 2nd買ってきた
461445:2007/07/20(金) 16:48:43
>>453 orz

stlport無しだといけるみたいなのでstlport無しでいくことにしました。 ありがとうstlport、そしてさよなら
462デフォルトの名無しさん:2007/07/20(金) 18:51:02
_STLP_USE_BOOST_SUPPORT無しでやってみるという発想はないのか
463445:2007/07/20(金) 23:49:27
>>462
ちょwwwwwwwwwwww その発想なかったwwwwwwwww 今ビルド中なのですがいけそうです
_STLP_USE_BOOST_SUPPORTなんてもっともな名前つけてあったので。。。 罠だったのかorz
464デフォルトの名無しさん:2007/07/21(土) 00:08:44
www多すぎだろ・・・
465デフォルトの名無しさん:2007/07/21(土) 19:35:41
>>463の脳内では文字列バッファをwで初期化してるに違いない
466デフォルトの名無しさん:2007/07/21(土) 20:06:16
なんかバグ出力させたときとか、デバッガで見たときにイラっとしそうなやつだな
467デフォルトの名無しさん:2007/07/22(日) 00:33:12
フフフフフじゃなくてwwwwwになるのか
468デフォルトの名無しさん:2007/07/22(日) 18:04:07
tokenizer で分割された個数を調べる方法はありますか?
469デフォルトの名無しさん:2007/07/22(日) 18:18:39
分割されたものを逐一コンテナに放り込んで行って、終了時にsze()でおk
470468:2007/07/22(日) 19:56:07
そうします。  end()-begin() はできないし size() も tokenizer には、ないので、何か便利な方法はないかなぁと思っていました。
471デフォルトの名無しさん:2007/07/22(日) 22:25:54
tokenizerのイテレータとカウンタを内蔵するオブジェクトを作って、そいつのインクリメント演算子でイテレータと
カウンタを同時にインクリメントするようにして
ループ内でそいつをインクリメントするのはどうだろう
472デフォルトの名無しさん:2007/07/22(日) 22:30:45
>>471
正直469案と等価
473デフォルトの名無しさん:2007/07/22(日) 22:35:52
そうですか…
なら手軽でシンプルな分そっちの方がいいっすね
474デフォルトの名無しさん:2007/07/22(日) 22:37:11
tokenizerにはなんというかロマンが無いと思います
475デフォルトの名無しさん:2007/07/22(日) 23:03:42
しかしspiritのごときロマンを盛り込まれても困る
spirit好きだけどね・・・コンパイル重いんよね・・・
476デフォルトの名無しさん:2007/07/22(日) 23:43:41
そういやspirit2はどうなったんだ?
477デフォルトの名無しさん:2007/07/23(月) 00:00:28
マルチバイトを扱えるイテレータが欲しい
478デフォルトの名無しさん:2007/07/23(月) 19:31:37
>>471
俺も思ったけど既存のコンテナに突っ込んでsize()するよりも利点を見出せない
479デフォルトの名無しさん:2007/07/23(月) 19:47:05
コンテナに突っ込んだら無駄にメモリ食わね?
480デフォルトの名無しさん:2007/07/23(月) 19:54:57
本当に数えたいだけならdistance使うだろ
481デフォルトの名無しさん:2007/07/23(月) 22:31:38
イタレータはないのにか?
482デフォルトの名無しさん:2007/07/23(月) 23:19:09
なんのこっちゃ
483468:2007/07/24(火) 01:55:56
>>480

ありがとうございます。
484デフォルトの名無しさん:2007/07/24(火) 13:53:12
boost::iostreamsをちょっと試しているのですが、
filtering_ostream/filtering_ostreambufのバッファリングモードを
変更する適切な方法はありますか。
試した感じでは、デフォルトでフルバッファリングされ、
pubsetbuf(0, 0)を実行しても、バッファリングなしの動作にはならないようです。

boost::iostreams::flush()で強制フラッシュさせることは可能なようですが、
あまり美しくない気がします。
485468:2007/07/24(火) 17:20:14
distance を使うのに iterator をインクルードするのが普通でしょうか?
xutility を include するのは推奨されないのかな。・。。

distance の実装 _Distance2 を見て少しがっかりしましたけど。。。これを使います。
486デフォルトの名無しさん:2007/07/24(火) 19:36:08
>>485
<iterator>をインクルードするのが普通。
こっちが標準ライブラリで規定されているヘッダだから。

ランダムアクセスイテレータ以外でのdistanceが
ああいう実装になるのはどうしようもない。
advance/distanceはそれを理解した上で使う存在だよ。
487デフォルトの名無しさん:2007/07/25(水) 10:24:54
Boost 1.34.1 age
488デフォルトの名無しさん:2007/07/25(水) 14:57:48
現存が確認されている「王子」 一覧

・ハンカチ王子  (斎藤佑樹、野球))  ・ハニカミ王子 (石川遼、ゴルフ)
・ハナクソ王子  (平山相太、サッカー)  以上「業界三大王子」

・ポッチャリ王子 (古田幸希、ゴルフ)  ・ドリブル王子 (鈴木修人、サッカー、早稲田の修ちゃん)
・筋肉王子    (長友佑都、サッカー) ・トンカチ王子 (ヴァージニア工科大学銃乱射犯、故人)
・イルハン王子  (イルハン)      ・有限会社王子 (商業手形割引を中心とした総合ファイナンス会社)
・海パン王子   (小島よしお、お笑い) ・スベスベ王子 (デイブ・スペクター、お笑い)
・ウィリアム王子 (英国)        ・カミカミ王子 (畠山智之、NHKアナウンサー)
・ヘンリー王子  (英国)        ・監禁王子   (小林改め石島泰剛、容疑者)
・八王子     (市、東京都)     ・謝罪王子   (福澤朗、フリーアナウンサー)
・広井王子    (詳細不明)      ・バンダル王子 (戦闘機売却契約裏金疑惑、サウジアラビア)
・若王子     (人質、故人)     ・パンダ王子  (宮本レッドブル恒靖、広告塔)
・ハコダテ王子  (藤岡佑介、騎手)   ・アドリブ王子 (パチスロ漫画、あかつきけいいち・作)
・元王子     (及川光博、ミッチー) ・アジム王子  (マイケルに12億のギャラ、ブルネイ)
・ハローワーク王子(東京労働局職業安定部職業安定課、東京都北区王子、http://www.ouji.hello-work.jp/
・はに丸王子   (はにわ、NHK)    ・ニセサツ王子  (津幡勝容疑者、王子製紙社員)
・タイのハニカミ王子(アイス・サランユー、タイ歌手)
489デフォルトの名無しさん:2007/07/25(水) 19:15:20
>>487
更新点教えれ
490デフォルトの名無しさん:2007/07/26(木) 03:47:23
491デフォルトの名無しさん:2007/07/26(木) 23:40:32
Boost本の二版が出てた
asioのとこだけ立ち読みしてきた
492デフォルトの名無しさん:2007/07/27(金) 19:21:12
asioってオーディオの?
493デフォルトの名無しさん:2007/07/27(金) 19:53:37
本田のロボット
494デフォルトの名無しさん:2007/07/27(金) 20:47:02
P2がどうしたって?
495デフォルトの名無しさん:2007/07/28(土) 02:49:32
Vista+Visual Studio2005Expressで
asioを使おうとしているのですが、うまくいきません。

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
とするとコンパイルできました。しかし、リンク時に
496デフォルトの名無しさん:2007/07/28(土) 02:50:32
「1>リンクしています...
1>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
をちゃんと指定しているのですが…
497デフォルトの名無しさん:2007/07/28(土) 10:29:32
asynchronous I/O で asio か
ASIOと紛らわしいな
498デフォルトの名無しさん:2007/07/28(土) 11:47:45
>>497
今の今までオーディオの方だと思ってスルーしてた・・・
499デフォルトの名無しさん:2007/07/28(土) 12:18:44
>>498
warosu.
紛らわしいからそのうち改名されるかもな

asioはACEとかよりboostライクでカッコよさげだが、
機能的にはどうなんだろ
500デフォルトの名無しさん:2007/07/28(土) 18:17:00
今のところネットワーク周りだけみたいだけど、
その内その名の通りI/Oを全体に適用してく野望があるらしい
501名無しさん@そうだ選挙に行こう:2007/07/29(日) 02:05:12
>>498
おいらも
502名無しさん@そうだ選挙に行こう:2007/07/29(日) 09:59:51
asio銅山
503デフォルトの名無しさん:2007/08/01(水) 08:18:09
>>502その発想はなかった。
504デフォルトの名無しさん:2007/08/01(水) 11:12:07
VC++2005STDのアンマネージドコードでBOOST_FOREACHを使うとなぜかリンクエラー。
同じトラブルではまった人いませんか?

[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を削除して、
普通にイテレーターでループを回すように直すとうまく動作します。。
505504:2007/08/01(水) 14:39:43
[C]で使ってたptr_mapをstd::mapに改めたらなぜかリンクエラーが出なくなりました。
謎だ…。
506デフォルトの名無しさん:2007/08/01(水) 15:45:04
【C++】STL(Standard Template Library)相談室 7 の新スレってまだ立ってない?
507デフォルトの名無しさん:2007/08/01(水) 20:47:21
立っている
508デフォルトの名無しさん:2007/08/01(水) 21:39:04
>>506
ないね。俺は立てられなかった。
509デフォルトの名無しさん:2007/08/01(水) 22:11:09
そもそも既存のC++スレで足りると思う。
まあこんなところにそう書いたところで、
その内誰か立ててしまうのだろうけど。
510デフォルトの名無しさん:2007/08/02(木) 02:17:38
>>509
その誰かを演じてしまった。

【C++】STL(Standard Template Library)相談室 7
http://pc11.2ch.net/test/read.cgi/tech/1185986999/
511デフォルトの名無しさん:2007/08/02(木) 02:32:15
C++はプログラマのレベル差が激しいから、スレも細分化したほうがいいよ
512デフォルトの名無しさん:2007/08/02(木) 02:34:42
>>511
個人的には、
C++でのTemplate metaprogrammingのスレもあってもいいんじゃないかと思ってる。
それこそ過疎りそうだけど・・・

どうなんでしょ?
513デフォルトの名無しさん:2007/08/02(木) 07:31:59
read_write_mutexってリリース中止になってたorz
昔書いたコードがビルドできなくて、boost/thread/read_write_mutex.hppが無いって言われたから
Debianのパッケージが腐ったかと思ったよ・・・。
514デフォルトの名無しさん:2007/08/02(木) 14:54:59
svnへの移行が混乱している件について
515デフォルトの名無しさん:2007/08/02(木) 15:26:46
>>512
過去実際に存在した
でご想像のとおり過疎ってた
(ただム板的には普通のスレ速度だったような)
516デフォルトの名無しさん:2007/08/02(木) 16:09:27
VC2005でxml_oarchiveを使うとdbgheap.cの_CrtIsValidHeapPointerで落ちてしまいます。
コードは以下のような感じ。ちなみに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);
}
517デフォルトの名無しさん:2007/08/03(金) 20:29:01
単体で動くテストプログラムのソースをうpろだでも使って挙げてくだされば
多少は協力できる人も出てくるかもしれませんよ
518516:2007/08/03(金) 20:44:47
どうもです。

いちおうかなり無理矢理ですができました。

どうやらboostのwindows版に標準添付されているlibファイル群は、
マネージドとアンマネージドの混在環境に対応していなかったようです。たぶん。

libファイルのプロジェクトをソリューションに追加して、/clrオプション付きでリビルドして、
元から提供されているライブラリをリンクしないように細工することでようやく動作しました。
もしかしたらもっとうまい方法があるのかもしれませんが、
ゲーム屋なのでWindowsのプログラムには慣れておらずよくわかりません。

それにしてもこのやりかたは非常に面倒ですね。
/clrオプション付きでビルドしたlibファイルも標準添付してくれると助かるのですが…。
519デフォルトの名無しさん:2007/08/03(金) 21:53:50
ちなみに#prgama unmanagedと非clrなlibだとどこまでいける?
520516:2007/08/03(金) 22:01:30
もう帰宅してしまったので試せませんが…。

ちょこっとだけ#pragma unmanagedを使ってみた限りでは効果がありませんでした。
もし効果があったとしてもpragmaの嵐になりそうな予感。

ちなみにassertの発生箇所は、freeしているところではなく、
staticなオブジェクトがプロセス終了時にデストラクトされるように、
atexitに登録しているところでした。

ということはユーザーコード側のnew/freeのタイミング調整では回避できないということです。

素直にclrなlibを作ったほうがよさそう。
521516:2007/08/03(金) 22:07:55
>staticなオブジェクトがプロセス終了時にデストラクトされるように、
>atexitに登録しているところでした。

わかりづらい説明だったのでちょっと補足。

if(NULL == m_self){
 static tkmap instance;
 m_self = & instance;
}

上記のコードでinstanceがプロセス終了時にデストラクトされるように、
コンパイラが内部でこっそりatexitを呼び出すコードを出力しています。
そこであぼーんしてしまうと。

ここはテンプレートではないのでインライン化されませんから、
結局pragmaでは回避できないと思います。
522デフォルトの名無しさん:2007/08/03(金) 23:51:40
ところでboost::functionで、コンパイラによっては
boost::function<void (int,int,DWORD)>
みたいな書き方できるようになっているけど、これと同じ書き方できるようにする場合、template引数どういう風に記述すればいい?
boost::functionのソース呼んでみたけど、この書き方できないコンパイラ対策のマクロがごちゃごちゃしててよくわからなかった・・・
523デフォルトの名無しさん:2007/08/04(土) 00:15:00
template<typename FunctionType> struct function;
524デフォルトの名無しさん:2007/08/04(土) 00:40:40
523の書き方でもいけるけど、
boost::functionの場合は、引数の数違いで部分特殊化している。
template<typename R, typename A1, typename A2, typename Allocator>
class function<R (A1, A2)> : public functionN<R, A1, A2>
これを引数の数だけプリプロセッサで対処している。
525デフォルトの名無しさん:2007/08/04(土) 14:07:12
v1.34.1なのですが。

boost/iostreams/detail/streambuf/linked_streambuf.hppで定義されている
BOOST_IOSTREAMS_USING_PROTECTED_STREAMS_BUFFER マクロに
C++標準のbasic_streambuf<>ではpublicであるsputcがなぜか紛れ込んでいるせいで
private送りになってしまい、
boost::iostreams::stream_buffer<>でsputc()が使えないみたいなんですが、
これはバグですかね。最新のバージョンでは直ってるんでしょうか。

まあ、ヘッダのマクロを修正したら一応使えるようにはなったんですが。
526デフォルトの名無しさん:2007/08/04(土) 19:28:13
>>525
リポジトリ確認してみたら?
直ってなければ Trac へ。
527デフォルトの名無しさん:2007/08/04(土) 20:25:26
>>526
SVN見てみたら二年間全くいじられてないヘッダのようだったので
レポあげてきた。

単に誰も使ってない、のか?w
528デフォルトの名無しさん:2007/08/05(日) 10:47:49
>>527
stream_bufferを使うシチュエーションってどんなの?
529デフォルトの名無しさん:2007/08/05(日) 23:55:23
>>523-524
d
しかしあのプリプロセッサの塊には本当に参った。
530516:2007/08/06(月) 12:27:09
ようやくちゃんと(?)解決できました。

C++/CLIでアンマネージドなオブジェクトファイルをリンクすると、
スタティック変数の初期化時にassertする問題がVC8にあり、
boostに限らずMFC等のライブラリをリンクするときもよく問題になっているようです。

そしてエントリポイントを?mainCRTStartupStrArray@@$$FYMHP$01AP$AAVString@System@@@Z
に書き換えてしまうのが一番簡単な解決策のようです。
518の方法でもたぶん大丈夫だとは思いますが、こっちのほうが簡単でしょう。

これはVCの問題ですが、同じ理由でboostが使えず困っている人も多いと思うので、
情報としてあげておきますね。
531デフォルトの名無しさん:2007/08/06(月) 20:49:03
C++/CLIって・・・・C++.NETに何でしないのさ・・・・
532デフォルトの名無しさん:2007/08/06(月) 22:13:37
それだと純正のC++でmanagedコードが書けちゃうかの様な誤解を招くからじゃね
533デフォルトの名無しさん:2007/08/06(月) 22:38:07
もうC++じゃないんだから、別の名前にしてほしかったな。C+++とか。w
534デフォルトの名無しさん:2007/08/06(月) 23:12:39
いや寧ろ、C#-だろ。
535デフォルトの名無しさん:2007/08/06(月) 23:17:49
>>531
ECMAへ提案する都合上、.NETというマイクロソフト色の強い名前を避けたのではないかな
536デフォルトの名無しさん:2007/08/07(火) 02:40:52
>>534
C土
C士
C工
C干
C牛
537デフォルトの名無しさん:2007/08/07(火) 07:42:11
C丼
538デフォルトの名無しさん:2007/08/07(火) 08:06:42
>>537に決定
539デフォルトの名無しさん:2007/08/08(水) 16:09:31
バグ利用のnative typeofがorcasでは見事に使えなくなってて笑った
本物のtypeof拡張が用意されてんのかな?
540デフォルトの名無しさん:2007/08/08(水) 20:53:34
>>539
見る限りないね。
http://msdn2.microsoft.com/en-us/library/2e6a4at9(vs.90).aspx
541デフォルトの名無しさん:2007/08/09(木) 19:58:48
boost ublasのvectorには
すべての要素を一度に代入or初期化する関数は用意されていないのでしょうか?

//このような風に書きたい
boost::numeric::ublas::bounded_vector<double,3> v;
v.set(1,2,3);

//これはできるのですが・・・
v(0)=1;
v(1)=2;
v(2)=3;
542デフォルトの名無しさん:2007/08/12(日) 20:07:21
C++0xになったらこう書けると思う。たぶん。きっと。

boost::numeric::ublas::bounded_vector<double,3> v = { 1, 2, 3 };
543デフォルトの名無しさん:2007/08/13(月) 10:35:17
Blitzみたくカンマ演算子をオーバーロードでなんとかならないかな?
544デフォルトの名無しさん:2007/08/13(月) 11:16:17
Cは昔から使っているのですが
C++を最近やり始めたものです
たぶん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はないのでしょうか?
545デフォルトの名無しさん:2007/08/13(月) 11:19:35
std::rope
546デフォルトの名無しさん:2007/08/13(月) 11:22:51
そして>>367-以下ループ
547デフォルトの名無しさん:2007/08/13(月) 11:50:07
>>544
ここはboostスレ。C++初心者スレへどうぞ。
548デフォルトの名無しさん:2007/08/13(月) 11:56:06
最近は初心者がBoostスレにまぎれこんでくる時代なのか…
549デフォルトの名無しさん:2007/08/13(月) 12:22:41
550デフォルトの名無しさん:2007/08/13(月) 16:35:44
>>549
おお!それです!!
ばっちり間に合いました!!!
ありがとうございます!!!!!
551デフォルトの名無しさん:2007/08/13(月) 23:53:40
>>550
一応、まだ標準外だがいいのか?
552デフォルトの名無しさん:2007/08/14(火) 03:57:37
auto変数で
boost::ptr_vector<string> fuga;
fuga.push_back(new string("hage"));
のような使い方をする場合
fugaのスコープから抜けたときに
string * が指しているオブジェクトも消去されますか?
553デフォルトの名無しさん:2007/08/14(火) 04:11:15
される
安心汁
554デフォルトの名無しさん:2007/08/14(火) 04:13:34
というかそれを実現するためのコンテナなんじゃないかと…
555デフォルトの名無しさん:2007/08/14(火) 11:33:51
>>552はパラノイア
556デフォルトの名無しさん:2007/08/15(水) 16:52:27
質問なんだけど、
一生無いと思うけど、boostに投稿するときってどうやるの?
興味で知りたいんだけど。
557556:2007/08/15(水) 16:55:53
新作のことね。
558デフォルトの名無しさん:2007/08/15(水) 17:05:58
寝言は寝て言え
559556:2007/08/15(水) 17:15:00
>>558
えー!興味ないの!?
560デフォルトの名無しさん:2007/08/15(水) 17:23:08
作ってから言え
561デフォルトの名無しさん:2007/08/15(水) 19:17:41
donutのお父さんでもsandboxにすら入ってないんだぜ…
562デフォルトの名無しさん:2007/08/15(水) 19:43:51
メーリングリストで紹介すればいいんじゃない?
563デフォルトの名無しさん:2007/08/15(水) 21:25:18
regex を使いたくて Boost をインストールしました。
これを利用して、Boost をインストールしていないPCでも実行したいのですが;
VS2005 でどのようにすればスタティック・リンクできますでしょうか?

教えてください。よろしくおねがいします。
564デフォルトの名無しさん:2007/08/15(水) 21:54:27
デフォルトでスタティックリンクする。
boostのdllにパスを通さなくても動くからね。
565デフォルトの名無しさん:2007/08/15(水) 22:07:42
Expressiveなら確かコンパイルすら要らなかったような
566デフォルトの名無しさん:2007/08/15(水) 22:49:18
http://boost.cppll.jp/HEAD/libs/regex/doc/install.html

.libファイルをプロジェクトに手動で加えることは必要ではない。ヘッダは自動的に、
ビルドモードに適切な.libファイルを選択し、リンカにそれをインクルードするように伝える。

動的C++ランタイムを使っている時にregexライブラリに動的リンクをしたいなら,
プロジェクトをビルドする時にBOOST_REGEX_DYN_LINKを定義すればよい.
567デフォルトの名無しさん:2007/08/15(水) 22:57:43
xpressiveな。ヘッダファイルだけだよ。
568デフォルトの名無しさん:2007/08/17(金) 12:02:58
ググって見つけた以下のコードをコンパイルしたら;
str が 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みたいに使う!"
);
569デフォルトの名無しさん:2007/08/17(金) 20:37:29
#include <boost/format.hpp>
570568:2007/08/17(金) 21:23:54
>>569

ありがとうございます。できました。

今度は、gzip, zlib 関連のライブラリーが作成されていないんですけど;
インストール時に何か指定が必要だったのでしょうか?
571デフォルトの名無しさん:2007/08/18(土) 14:08:25
こうして質問責めの無限ループに突入するんだろうなぁ
572デフォルトの名無しさん:2007/08/19(日) 00:29:40
>>570
「Boost C++ Libraries プログラミング 第2版」に書いてたはずだからとにかく読んでこい
573568:2007/08/19(日) 00:37:46
>>572

買ってからスタートしているんですが。
574デフォルトの名無しさん:2007/08/19(日) 00:46:41
>http://boost.org/libs/iostreams/doc/installation.html

Windowsならbzip2やzlibを使うフィルタはデフォルトで作成されないってさ
リビルドしる
575568:2007/08/19(日) 16:18:37
>>574

なるほど、、どっちにしろ zlib が別個に必要なんですね。
そこまで含めてスタティックにリンクしてくれるとうれしいんですが・・・
576デフォルトの名無しさん:2007/08/26(日) 20:45:42
Boostなんてたいしたこと無いだろ
これが一番典型的な例

____              progress_
|← reject|  boostの中の人  display   ユーザー
. ̄.|| ̄ ̄        ┗(^o^ )┳(^o^ )┳(^o^ )┛≡=-
  ||            ┏┗  ┗┗  ┏┗ ≡=-
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
577デフォルトの名無しさん:2007/08/26(日) 20:59:16
>>86
404なんだけど
578デフォルトの名無しさん:2007/08/26(日) 22:22:26
6月か7月あたりから404になったねぇ。
東京大学のヤスなんちゃらさんが卒業したか転職したか
引き抜かれたか飛ばされたかしたんじゃない?
579デフォルトの名無しさん:2007/08/27(月) 17:16:00
wget -m しといて在る意味よかったかも。
AirH゛なせいで夜中にwgetとかよくやる。
580デフォルトの名無しさん:2007/08/27(月) 20:45:04
multi_arrayで2次元目の配列の要素の数を取り出すにはどうすればいいのでしょうか?

vector<vector<double> > hoge;
int second_dim_length = hoge[8].size();

みたいなことをしたいのですけど。
581デフォルトの名無しさん:2007/08/27(月) 22:27:21
boost::multi_array<double, 2> hoge( boost::extents[8][8] );
hoge[8].size();;
582デフォルトの名無しさん:2007/08/28(火) 07:44:56
>>552-554
解放されない
583デフォルトの名無しさん:2007/08/28(火) 10:03:29
>>581
thank you!
584デフォルトの名無しさん:2007/08/28(火) 13:43:25
>>582
ptr_vector だぞ。内部スマートポインタで解放されなかったらダメだろ
585デフォルトの名無しさん:2007/08/28(火) 18:46:54
シリアライズを使ったらプログラムが300Kも増えました。
あと、最後に .lib .exp を作成しだしました。 <--- これは止められないのかな?
586デフォルトの名無しさん:2007/08/28(火) 19:04:46
>シリアライズを使ったらプログラムが300Kも増えました。
どこかのスレのテンプレみたいでにやっとしてしまった
587デフォルトの名無しさん:2007/08/28(火) 20:13:42
全角が間抜けさを強めてるな。

全角って何ですか?

"いわゆる全角"のことではないでしょうか。
588デフォルトの名無しさん:2007/08/28(火) 21:08:31
UNICODEのFULLWIDTH何とか文字の事だろう。
589デフォルトの名無しさん:2007/08/28(火) 21:12:10
そういや「全角」って言い回しがUnicodeにも引き継がれてるんだな…
590デフォルトの名無しさん:2007/08/28(火) 21:39:01
全角の全とか角とかの語源知ってる人いますか?
591デフォルトの名無しさん:2007/08/28(火) 21:42:40
写植用語じゃね?
592デフォルトの名無しさん:2007/08/28(火) 22:03:03
ワープロ用語かと思ってた
二倍角とかそういうのなかったっけ
593デフォルトの名無しさん:2007/08/28(火) 22:07:41
ワープロ用語です
「全」は半角に対する語
なんで「角」なのかは知らない
594デフォルトの名無しさん:2007/08/28(火) 22:17:02
今の若い人は4倍角なんて知らんだろうな
595デフォルトの名無しさん:2007/08/28(火) 22:33:44
半角漢字とかもあったなあ
596デフォルトの名無しさん:2007/08/28(火) 22:53:20
MS Wordでフォントサイズと文字幅の指定を使って
縦倍角や横倍角を再現する方法は、ググればわりと見付かる。
597デフォルトの名無しさん:2007/08/28(火) 22:58:11
再現して嬉しいかってなもんではあるけどな……
598デフォルトの名無しさん:2007/08/28(火) 23:03:55
NEC拡張の文字に半角ひらがなとかもあるよ。
599デフォルトの名無しさん:2007/08/29(水) 18:25:47
boost::archive::binary_oarchive
ってSJISだと漢字や\問題がでて書き込めるけど、読み込み時にバグるんですね。。
せっかくバイナリなのに? 参った。

600デフォルトの名無しさん:2007/08/30(木) 00:37:42
UNICODEの時代に全角と半角の区別すること字体がおかしいって言ってるひといるけど
AとAはやっぱり違うだろ?
601デフォルトの名無しさん:2007/08/30(木) 00:40:18
区別しないとAA書く時に困るしな。
602デフォルトの名無しさん:2007/08/30(木) 00:56:14
URL偽装できないしな。
603デフォルトの名無しさん:2007/08/30(木) 02:06:21
>>600
倍角の A とか4倍角の A とか、イタリック体の A とか全部違うコードだったら厭だろ?w
個人的にはフォント指定等で区別してほしかったな。今となっては手遅れだけど。
604デフォルトの名無しさん:2007/08/30(木) 02:33:40
同じAなのに何種類もコードがあるほうがもっと厭
605デフォルトの名無しさん:2007/08/30(木) 08:49:54
同じAではないけれど
A a
ÀÁÂÃÄÅ
ǞǟǠǡ
Ǻǻ
ȀȁȂȃ
Ά Α Α α А а
606デフォルトの名無しさん:2007/08/30(木) 08:53:58
工エエェェ(´д`)ェェエエ工工
607デフォルトの名無しさん:2007/08/30(木) 09:58:09
AΑАA
左からいわゆる半角、ギリシア文字、キリル文字、いわゆる全角。
元々同じ文字だけど全部違うコード。
608デフォルトの名無しさん:2007/08/30(木) 20:29:46
IMEで「リ」を変換しようと候補を出すと
候補一覧のひらがなの「り」のフォントが
実際に出てくる文字と違うんだけどなんで?

609デフォルトの名無しさん:2007/08/30(木) 22:28:12
MS UI Gothic では左右がくっついたグリフが採用されているから
文字自体は同じもの
610デフォルトの名無しさん:2007/08/31(金) 12:29:46
何この文字コードスレ?
611デフォルトの名無しさん:2007/09/01(土) 02:55:15
boost VS2008対応いつ?

悲しいことにテンプレート周りのバグが修正されているようなので
ネイティブtypeofが実現できるのか気になるなあ
612デフォルトの名無しさん:2007/09/01(土) 03:34:41
コンパイラだけ2005の使うとかw
意味ないか
613デフォルトの名無しさん:2007/09/02(日) 21:05:19
あるクラスへの shared_ptr をとるような関数に、
静的に確保されているインスタンスのポインタを渡したいときって、
どうすればいいんでしょうか?


//静的に確保されている myclass のインスタンス
//MyClass はデフォルトコンストラクタを持つ
static MyClass myclass;

//MyClass のインスタンスを shared_ptr として受け取る
void func(boost::shared_ptr<MyClass> p){
p が指す MyClass のインスタンスに関する処理
}

myclass が delete されちゃったりするのでしょうか?????

614デフォルトの名無しさん: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;
}
615デフォルトの名無しさん:2007/09/02(日) 21:24:10
前のレス、激しく間違ってるね・・・それはおいといて

class 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;
}

ってすればいいのかな?
616デフォルトの名無しさん:2007/09/02(日) 22:44:10
617デフォルトの名無しさん:2007/09/03(月) 03:14:36
boostにcalendarクラスってありますか?
618デフォルトの名無しさん:2007/09/03(月) 03:17:54
#include <boost/date_time.hpp>
619デフォルトの名無しさん:2007/09/03(月) 03:34:35
libboost_date_time-vc80-mt-1_34_1.lib が無いと言われます
620デフォルトの名無しさん:2007/09/03(月) 03:38:17
vc80はまだだめだろ
621デフォルトの名無しさん:2007/09/03(月) 06:25:12
622デフォルトの名無しさん:2007/09/03(月) 07:43:56
ありがとうございます
ttp://www.emaki.minidns.net/Programming/tools/Boost/
ここと
ttp://tech.ckme.co.jp/boost.shtml
ここを参考にして解決出来ました

623615:2007/09/03(月) 08:38:06
>>616
おお、ちゃんと解説しているページがあるじゃないか・・・
何もしないファンクタくらい boost:: 名前空間内に
用意しておいてくれればいいのになぁ。
624デフォルトの名無しさん:2007/09/03(月) 10:45:46
ところで、リファレンスの日本語訳開くとき必ず文字化けするんだが俺だけか?
625デフォルトの名無しさん:2007/09/03(月) 11:23:47
filesystem って日本語のファイル名やディレクトリ名使っても問題ないですか?
626デフォルトの名無しさん:2007/09/03(月) 11:26:41
>>624
俺も。見るたびにエンコードをEUC-JPにしてるが面倒くさいな。
627デフォルトの名無しさん:2007/09/03(月) 11:29:56
http://ml.tietew.jp/cppll/cppll/article/12599

VC6だとダメみたいだけど
628デフォルトの名無しさん:2007/09/03(月) 11:41:01
>>624
HTTP bodyがEUC-JPなのに、HTTP headerはUTF-8指定なんだな。
修正して欲しいなあ。
629デフォルトの名無しさん:2007/09/03(月) 12:25:52
apacheのデフォルトがあれだからな・・・・
630デフォルトの名無しさん:2007/09/03(月) 22:28:17
>627
1.34.1 のリリースアナウンスの Supported Compilers には VC6 入ってるよ?
でも regression test の wide test は failed になってるね。
http://engineering.meta-comm.com/boost-regression/1_34_1/user/filesystem_release.html
631デフォルトの名無しさん:2007/09/03(月) 22:53:02
ディレクトリ名の末尾が「表」とかだと見事に落ちました

ほんとうにありがとうございました
632デフォルトの名無しさん:2007/09/03(月) 23:03:53
OSが落ちた?まさかね
633デフォルトの名無しさん:2007/09/03(月) 23:49:09
うひょー!
634デフォルトの名無しさん:2007/09/04(火) 02:01:25
leafが悪さしてるみたい
635デフォルトの名無しさん:2007/09/04(火) 19:31:17
(^∀^)ゲラゲラ
636デフォルトの名無しさん:2007/09/05(水) 01:20:13
Visual Studio 2005 のスレッドから誘導できました。ちら裏ですが、
namespace fs = boost::filesystem;
だと IntelliSense が働きませんが、
namespace fs { using namespace boost::filesystem;}
だと IntelliSense が働きます。
637デフォルトの名無しさん:2007/09/05(水) 02:03:36
anonymous unionをstructで囲ったりとか
638デフォルトの名無しさん:2007/09/05(水) 02:04:06
unionじゃなくてenumね
あんっ あ
639デフォルトの名無しさん:2007/09/06(木) 10:52:38
>>637 それ、どんな効果があるの?
640デフォルトの名無しさん:2007/09/06(木) 12:36:25
「タグ名::」と入れてインテリ扇子を振るとenum内容が出てくる
641デフォルトの名無しさん:2007/09/06(木) 23:39:40
>>636
超ありがとう
642デフォルトの名無しさん:2007/09/10(月) 21:49:43
boost::gilの、

pixel::operator[]で
pixel[0];

ってふうにアクセスするのと、

semantic_at_c<0>( pixel );

ってアクセスするのでは何が違うのかわからん。。。
わかるヒトいる?
643デフォルトの名無しさん:2007/09/10(月) 22:16:09
こんなのあるんだねぇ。知らなかったよ。

operator[]が動的にアドレスを計算するのに対し、
semantic_at_cのほうはオフセットが静的に展開されるという違いがあるかと。

644デフォルトの名無しさん:2007/09/10(月) 22:38:28
色気が違う
645デフォルトの名無しさん:2007/09/11(火) 12:30:14
>>644
そこまでひねりが無いのは如何な物か?
646デフォルトの名無しさん:2007/09/11(火) 13:45:07
>>643
なるほど。サンクス。
647デフォルトの名無しさん:2007/09/11(火) 21:29:55
typedef std::istreambuf_iterator ifsb_iterator;
BOOST_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ループに展開すれば使えるのですが。。。

原因や解決策がわかる方、どうかお力添えをお願いします
648デフォルトの名無しさん:2007/09/11(火) 21:53:14
すいません解決策はありました
ovenのstream_read
649デフォルトの名無しさん:2007/09/11(火) 21:54:13
系を使えばいいようですが、原因はやはりわかりません
650デフォルトの名無しさん:2007/09/13(木) 00:43:35
BOOST_FOREACH ( char &i, ifsb_rng ) {}

これじゃぁだめやろか?
651デフォルトの名無しさん:2007/09/13(木) 02:03:39
>>647
istreambuf_iterator<>::value_typeが参照型でないことが直接の原因だと思う。

const参照ならコンパイルできるのではないかと思った。
そこで試しにvalue_type/pointer/referenceをconst付きの型にしたアダプタを作ってみたが、
「C4172 ローカル変数またはテンポラリのアドレスを返します。」という警告になってしまった。
そういう問題ではなかったOTL。
652デフォルトの名無しさん:2007/09/14(金) 20:37:07
boostってboost/preprocessorとか使ってるのとかあったりして、tags作りにくいと思うだけど諸兄方はどうなされてますか?
653デフォルトの名無しさん:2007/09/14(金) 22:20:05
なまえくうか
654デフォルトの名無しさん:2007/09/14(金) 23:36:02
>>653 kwsk
boost::iostreams::stream_bufferのコンストラクタとかopenとかみたいなののために
boost::iostreams名前空間全体を補完候補から捨てたくありません><
655デフォルトの名無しさん:2007/09/15(土) 00:22:42
#include <iostream>
#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")();ではコンパイルエラーになってしまいますとです
656デフォルトの名無しさん:2007/09/15(土) 00:47:37
>>655
bll::bind(bll::unlambda(puts_), "text");
でどうだ?
657デフォルトの名無しさん:2007/09/15(土) 02:14:40
>>656
回答ありがとうございました
unlambda
こんなものもあるんですね・・・
もっとドキュメント熟読すべきでした
658デフォルトの名無しさん:2007/09/16(日) 13:21:52
659デフォルトの名無しさん:2007/09/16(日) 17:37:53
boost::filesystem って 1.34 で大幅に変わりました?
ワイド文字対応があったってことは知ってるんですが。

http://www.kmonos.net/alang/boost/classes/filesystem.html
「version 1.34 で、 パス文字列として独自形式ではなく
実行環境で普通に使われる形式を扱うようになりました。」

って書いてあるんですが、native の扱いが変わったってことですか?
660デフォルトの名無しさん:2007/09/16(日) 17:45:53
質問です。
thread-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のコンストラクタが呼ばれている保証がなく、
この実装は危険なものになってしまいます。

皆さんどうやってシングルトンを実現してますか?
661659:2007/09/16(日) 17:56:20
1.34 (Internationalization) Changes
http://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 かを指定する必要はないんですね。
う〜ん、しかしそんなことでパス文字列の分解とか正しくできるんだろうか。
662デフォルトの名無しさん:2007/09/16(日) 18:11:53
\と/が混ざったらどうなるんやろうー
663デフォルトの名無しさん:2007/09/16(日) 20:44:54
\と/、両方で区切ればいいだろ。
何か問題あるのか?
664デフォルトの名無しさん:2007/09/16(日) 23:35:15
\と/と:が混ざったらどうなるんやろうー
665デフォルトの名無しさん:2007/09/17(月) 00:01:25
\と/と:で区切ればいいだろ。
何か問題あるのか?
666デフォルトの名無しさん:2007/09/17(月) 00:46:41
ドとレとミとファとソとラとシの音が混ざったらどうなるんやろうー
667デフォルトの名無しさん:2007/09/17(月) 01:56:42
座標変換すればいいだろ。
何か問題でもあるのか?
668デフォルトの名無しさん:2007/09/17(月) 08:42:52
Visual Studio 2005 ではしょっちゅう IntelliSense が
機能しなくなります。Visual Studio 2008 のベータで使って
おられる方、どうですか?改善されてますか?

同じような報告が boost の ML にもあったけど、
「おめぇ、それ、boost の問題じゃないだろが、
 関係ねぇメッセージ投稿してるんじゃねぇよ、禿」
って罵倒されてました。
外人オソロシス
669デフォルトの名無しさん:2007/09/17(月) 09:03:44
>>668
>「おめぇ、それ、boost の問題じゃないだろが、関係ねぇメッセージ投稿してるんじゃねぇよ、禿」
同意。
670デフォルトの名無しさん:2007/09/17(月) 09:42:57
>>668
スレ違いだろ、屑
671デフォルトの名無しさん:2007/09/17(月) 09:43:44
まあboostの変態ぶりのせいでIntelliSenseも苦労してそうだけどね…。
672デフォルトの名無しさん:2007/09/17(月) 10:08:32
プリプロセッサとテンプレートを処理するのは大変そうだもんな。
静的な変態ぶりじゃ俺も負けないつもりなんだが。
673デフォルトの名無しさん:2007/09/17(月) 10:22:37
>>672
動的な変態にはなるなよ。
674デフォルトの名無しさん:2007/09/17(月) 10:23:02
boostはboostでライブラリ出してるけど、c++の標準ライブラリと一緒に配布されるの?
675デフォルトの名無しさん:2007/09/17(月) 11:06:39
はあ?
676デフォルトの名無しさん:2007/09/17(月) 12:33:33
c++0xにboost(の一部)が取り込まれたらboostはどうなるのか?
という意味ではないかとエスパーしてみる
677デフォルトの名無しさん:2007/09/17(月) 12:55:44
エスパー乙
ttp://ja.wikipedia.org/wiki/Boost
678デフォルトの名無しさん:2007/09/17(月) 12:56:40
いや、どうみても、progress_display等のすばらしいBoostのライブラリは、
標準ライブラリとして取り入れられるのかと聞いているだけだろ。
679デフォルトの名無しさん:2007/09/17(月) 13:14:00
>progress_display等のすばらしいBoostのライブラリ

すばらしいか?
便利は便利ですが個人的にはあまり面白くないです。
680デフォルトの名無しさん:2007/09/17(月) 13:18:50
どう読んでも皮肉だろw
681デフォルトの名無しさん:2007/09/17(月) 13:20:26
reject!!
682デフォルトの名無しさん:2007/09/19(水) 10:03:49
683デフォルトの名無しさん:2007/09/19(水) 14:47:25
一時期emacs(meadow)に浮気してたこともあったけど
やっぱりc++はVisualStudioだね
684デフォルトの名無しさん:2007/09/19(水) 15:33:56
そんなこたぁない
685デフォルトの名無しさん:2007/09/19(水) 17:02:59
ちょっと質問です

VisualStudio2005上で
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

っていうエラーが出てしまいます(末尾の文字化け部分もそのままコピペしてます)
ソースファイルの文字コードを変えたりしてみたのですがうまくいきません
どうすればこれ直りますか?
686デフォルトの名無しさん:2007/09/19(水) 17:20:47
まさか書き込み権限がないって落ちじゃないよね。
いずれにしても、Boostの問題じゃなさそうだが。
687デフォルトの名無しさん:2007/09/19(水) 17:33:52
すみません、ソリューションのクリーンをやったらきちんといけました、sorry・・・
688デフォルトの名無しさん:2007/09/19(水) 21:54:49
         ∧..∧
       ⊂(・∀・)つ-、<福田を押してるのは
     ///  /_/:::::/ <加藤紘一、山崎拓、古賀誠   
     |:::|/⊂ヽノ|:::| /<日本オワタ\(^o^)/
   / ̄ ̄旦 ̄ ̄ ̄/|
 /______/| |
 | |-----------| |


(福田総理となるとこれから想定される事態)
・南京大虐殺を認め日本の首相として正式に謝罪しますフフン
・従軍慰安婦の方々には国として手厚く賠償しますフフン
・拉致問題は解決済みですフフン
・在日韓国朝鮮人の皆さんには生活保護と年金を漏れなく支給しますフフン
・総連への税制優遇措置も再開しますフフン
・在日韓国朝鮮人の皆さんには選挙権も与えますフフン
・2000万の中国の人たちの日本への移民を認めますフフン
・人権擁護法の成立に全力を尽くしますフフン
・中国へのODAは継続し無償技術提供もしますフフン
・中国韓国朝鮮人の方々の命は地球より重いです、日本人?なにそれフフン
689デフォルトの名無しさん:2007/09/19(水) 22:06:23
690デフォルトの名無しさん:2007/09/21(金) 06:56:44
string sre("[^漢示本xyz\\s\\-]+");
boost::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;
}
691デフォルトの名無しさん:2007/09/21(金) 09:44:06
どうして w シリーズでやらないのですか?
692デフォルトの名無しさん:2007/09/21(金) 09:51:28
wchar_t版のregexはバグ持ってるらしい
693デフォルトの名無しさん:2007/09/21(金) 10:12:35
がんばれおれの IntelliSense
がんばってテンプレートも果敢に解析してくれ!
694デフォルトの名無しさん:2007/09/21(金) 13:06:27
http://www.boost.org/libs/filesystem/doc/index.htm

ここで 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 の使い方って
どこに載ってるの?
695デフォルトの名無しさん:2007/09/21(金) 19:07:32
いままで、foo(const X& x) で引数を受け取っていた関数fooを、shared_ptrを使うように書き直す場合、
foo(const boost::shared_ptr<X> x) とすればいいんでしょうか?
foo(boost::shared_ptr<const X> x) だったりしますか?

両者に違いはありますか?

 
696デフォルトの名無しさん:2007/09/21(金) 19:14:21
>>695
const X *をスマートにしたのがshared_ptr<const X>
X *constをスマートにしたのがconst shared_ptr<X>
697デフォルトの名無しさん:2007/09/21(金) 19:17:25
なるほど。では、const shared_ptr<const X> xで受けて、関数の冒頭でassert(x); するのがよさそうですね。

まぁ実際上は shared_ptr<const X> x でいいかな。
ともかく、ありがとうございました。
698デフォルトの名無しさん:2007/09/21(金) 23:15:14
>694
コード読め。さもなくば
『Boost C++ Libraries プログラミング 第2版』
http://www.kmonos.net/pub/BoostBook/
でも買えば?
699デフォルトの名無しさん:2007/09/22(土) 10:24:14
boost::serialization が便利そうなんで使いたいのですが
vc++6.0 じゃ使えないのでしょうか?

>LINK : fatal error LNK1104: ファイル "libboost_serialization-vc6-sgd-1_34_1.lib" を開けません。

boostビルド時にエラーがボコボコ出てたんで生成されなかったみたいなのですが・・・
700デフォルトの名無しさん:2007/09/22(土) 10:39:56
vc6で使えないライブラリは多いよ
これを機にvc2005に移行することをお勧めする
vc2005でもwindows95で動くものは作る事は出来るようだし
701デフォルトの名無しさん:2007/09/22(土) 11:38:36
そうですか
残念

お金無いので無償版vc2005の検討してみます

702デフォルトの名無しさん:2007/09/22(土) 20:11:28
>>699
binary では、日本語を含む物は動きませんでした。
703702:2007/09/22(土) 20:12:20
VS2005 でね!
Text や XML は問題ありませんでした。
私はバイナリだけが使いたかったので; がっかり
704デフォルトの名無しさん:2007/09/22(土) 20:33:30
>>702
ん? wstring とかシリアライズできない??
705デフォルトの名無しさん:2007/09/22(土) 21:24:44
string 内に漢字があると binary では シリアライズできません。
706デフォルトの名無しさん:2007/09/22(土) 22:30:25
文字コードは何?
707デフォルトの名無しさん:2007/09/23(日) 04:01:20
>>705
なるほど、マルチバイト文字を string に入れてるとダメなのか。
漏れは数値データばっかり扱ってたから気付かなかった。
むしろ double とかが nan (signaling/quiet) のときに
xml_oarchive では出力できるのに
xml_iarchive で入力すると例外が発生するのが不便。
708デフォルトの名無しさん:2007/09/23(日) 04:02:57
boost/pool/detail/singleton.hpp ってまともな取り扱いされてる?
名前空間が boost::details::pool::singleton_default で、
なんかディレクトリと齟齬が生じているみたいなんだけど。
boost ではシングルトン関連はあんまり重視されてない?
709デフォルトの名無しさん:2007/09/23(日) 04:10:44
自分で描けばええやん
710デフォルトの名無しさん:2007/09/23(日) 04:29:53
>>709
・・・・・・そんなこと言ったら boost 全部そうじゃん orz
711デフォルトの名無しさん:2007/09/23(日) 04:34:30
>>708
detail以下をのぞくのは自重しる。

シングルトンは、自分用のを作るのは大変簡単だが様々な要求を満たす柔軟なのをつくるのは難し
いということで、割りにあわないから無いんだろ。古い話だがModern C++ Designのもアレだったしさ。
712デフォルトの名無しさん:2007/09/23(日) 05:59:25
>>710
boost全部singleton並に簡単じゃないので、そうじゃないよ
713デフォルトの名無しさん:2007/09/23(日) 06:45:46
>>712
シングルトンもスレッドセーフに作ろうと思うと
結構難しい気がするのだが・・・

>>711
そうか、detail 以下を覗くのはやめた方がいいのか。

-----------------------
ライブラリーで定義されているすべての開示された
シンボルは名前空間boost内にある。ライブラリーの
実装だけが使用するシンボルは名前空間
boost::details::pool内にある。
ライブラリーの実装だけが使用するヘッダーは
サブディレクトリーdetail/にある。
-----------------------

boost::detail:: ってそんな規約のもとに使われている
名前空間だったのか。全然知らんかった。
714デフォルトの名無しさん:2007/09/23(日) 06:50:39
>>713
c++0xで関数の中のstaticなオブジェクトの初期化がスレッドセーフだと明言される予定だから、簡単になるよw
あるいはそれ先取りしてるgcc4使えばいまでも簡単だ。

VC++は、2003くらいではスレッドセーフでは無かったが、2005はどうなんだろ。
715デフォルトの名無しさん:2007/09/23(日) 07:42:15
Singleton Pool Implementation
http://www.boost.org/libs/pool/doc/implementation/singleton_pool.html
一応ドキュメント化はされているみたいだから
絶対使っちゃダメってわけでもないんだろうけどね。

スレッドで気になるんだけど、スレッド関係の関数は
次の C++ 標準に入るんだったっけ?○ちスレッドな処理を
しようとするとポータブルにかけないんだよな。
716デフォルトの名無しさん:2007/09/23(日) 09:23:33
主要なところは、
Multi-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
717デフォルトの名無しさん:2007/09/23(日) 11:07:10
boostでpython使用のコンパイルが出来ない
set 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の場所が分からないとほえます
どうしたらいいんですか?

718デフォルトの名無しさん:2007/09/23(日) 11:49:15
氏ねよ、コンパイルもできない、屑
719デフォルトの名無しさん:2007/09/23(日) 12:41:53
あ、全部のワーニングが消えたので全部入ったみたいです…………?
720デフォルトの名無しさん:2007/09/23(日) 13:03:49
>>719
息子が孫のクチか?
721デフォルトの名無しさん:2007/09/23(日) 13:13:52
ライブラリとインクルードパスまで指定しないと自分の環境では無理でした
722デフォルトの名無しさん:2007/09/23(日) 14:58:00
初めてasio使ってみようと思ったら
>>495-496
と同じ症状が出てるんですけど
解決策分かるかたいらっしゃいますか?
VC2005ExpressEditionです
723デフォルトの名無しさん:2007/09/23(日) 16:31:06
724デフォルトの名無しさん:2007/09/23(日) 18:17:51
やっとコンパイル終わった。
>>722
2005スタンダードで通ったよ
外部参照云々はライブラリをちゃんと指定すれば動くんじゃね?
725デフォルトの名無しさん: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で失敗

いやぁライブラリのビルドとは桁違いの難しさです
726デフォルトの名無しさん:2007/09/24(月) 17:31:59
xsltのセットアップはもう一度やれと言われても出来ないかもしれない
727デフォルトの名無しさん:2007/09/24(月) 20:17:45
boostdocのドキュメントのinstall and configurationの頁から飛べるところからとってきたxsltprocでは
絶対パスに含まれる:(コロン)が%3Aなどと化けているのが原因の一つのようだ
ちなみにcygwinのxsltprocだと/も化ける(笑)
下手するとxsltprocのソース弄ってビルドしなおさないと駄目かもしれんね
流石にそこまでできる気力はないが

Linuxなら同様の手順で難なくビルドできたんで、そこから持ってくることにしますか
しかしcppllで翻訳して"た"人達は同じような環境でうまくできてたんですよね…
なんか悔しいですわ
728デフォルトの名無しさん:2007/09/25(火) 00:18:11
どうせ、g++じゃないと、いろいろ不都合も多いし、
普通にvmware + ubuntu Linuxでbuild&compileしてます。> Boost最新
729デフォルトの名無しさん:2007/09/25(火) 00:19:41
いまtestのpass率でtopなのは、g++じゃなくて最新のVC++じゃないの?
730デフォルトの名無しさん:2007/09/25(火) 04:40:53
CVS headのサマリーだとLinux版のicc9が強いようだ
gccは結構駄目みたいけど、他では通りにくいのが通ったりと面白い結果になってる
icc10はどれぐらい対応してるんだろうかが気になる
731デフォルトの名無しさん:2007/09/25(火) 19:26:30
http://beta.boost.org/development/tests/trunk/developer/summary.html

VC8 win 9 fails
icc9 Linux 14fails
gcc4.1 Linux 12fails

icc9よりgcc4.1の方がマシになってね?
やっぱり最強はVC8だけど。
732722:2007/09/26(水) 06:27:23
>>723-724
ありがとうございます。
とりあえず使えるようになったのですが、
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>

以上ご報告まで
733デフォルトの名無しさん:2007/09/26(水) 07:50:27
boost::filesystem::path でファイルパスをポータブルに
扱えるのは便利だけど、これからは URI や IRI も
扱う場面が増えてくるんじゃないかな?

URI や IRI を扱うために便利なポータブルなライブラリって
あります?
734デフォルトの名無しさん:2007/09/26(水) 08:27:49
cURL
ウソ
735デフォルトの名無しさん:2007/09/26(水) 08:31:05
あなたが作って投稿してください
736デフォルトの名無しさん:2007/09/26(水) 10:14:42
メモメモ

vc8環境下でICU3.8をビルドしてboost.regexで使うようにすると
icui18n.libとかicudata.libが無いっておこられる
そこでicuin.libとicuind.libをicui18n.lib icui18nd.libに、
icudt.libをicudata.libにコピー&リネームすると通る
regexのテストは一応全通過

本来はどうするべきなんだろうか…
737デフォルトの名無しさん:2007/09/26(水) 16:14:17
さすがに他のライブラリをさらに必要とする
昨日は C++ の標準には入らないとおもうんだけど、どう?
738デフォルトの名無しさん:2007/09/26(水) 16:17:25
>>737
他のライブラリを必要とするかどうかは実装の問題だから標準云々にはとりあえず関係ないと思う
739デフォルトの名無しさん:2007/09/26(水) 17:54:17
Boost.Pythonとかは入らないだろうがな
740デフォルトの名無しさん:2007/09/26(水) 19:49:50
むしろICUを標準に
741デフォルトの名無しさん:2007/09/26(水) 23:57:31
Type2Type!
742デフォルトの名無しさん:2007/09/27(木) 06:39:39
std::string pythoncode = "pythoncode";
Boost::Python python(pythoncode);
cout << phthon;

743デフォルトの名無しさん:2007/09/27(木) 19:07:07
bjamで俺ルールを使うときに
import myrule ;
みたいに書きたいんだけど、moduleの検索パスをどうやって追加するかがわからないので
とりあえず確実に検索されてるなというパス
$BOOST_BUILD_PATHと$BOOST_BUILD_PATH/utilに放り込むという方法しかとれないのが悔しい…でも(ry
744デフォルトの名無しさん:2007/09/27(木) 23:57:34
pythonじゃなくてlispでメタな制御したいのだけど、boostにはそういうライブラリーはないの?
745デフォルトの名無しさん:2007/09/28(金) 00:49:21
boostはないけど、CLOSやマクロやcall/ccやdefine-syntax使ったのが山ほどあるじゃん
746デフォルトの名無しさん:2007/09/30(日) 18:16:00
boost::program_options って便利なんだけど、もっと、こう、
便利にならないかなぁ。たとえばオプションの一覧を
何らかのマクロで与えれば、それを解析する
boost::program_options::options_description の
インスタンスが自動的に生成されて、なおかつ
コマンドラインオプションの解析結果を保持する
シングルトンも自動的に生成されるとか。
747デフォルトの名無しさん:2007/09/30(日) 20:22:24
>>746
ちょっとだけ使ってみたけど、何だかコードが長ったらしくなってしまい、
古典的なgetopt()を使ったコードに比べてそんなにいいとも思わなかった俺は
老害と言えよう。
748デフォルトの名無しさん:2007/09/30(日) 20:26:01
boost::program_options::options_description dc;
を、std::cout << dc; したときの出力速度がやったら遅い気がする。
のが気になった。
749デフォルトの名無しさん:2007/09/30(日) 21:43:13
コマンドラインをパースしたとき、定義していないオプションが
出現しても例外を出さずに単に無視するだけにしてほしいんだけど、
そういうことはできないのかな?
750デフォルトの名無しさん:2007/09/30(日) 22:06:37
パーサ自作して、extra_parser()で登録すればできると思うよ。
751デフォルトの名無しさん:2007/09/30(日) 22:18:24
>>750
。。。。。面倒すぎる・・・
catch してやりすごそう・・・
と思ったけど catch しちゃったら
途中でパース投げ出してるじゃん!
752デフォルトの名無しさん:2007/09/30(日) 22:19:52
>>751
そうそうw
抜けちゃうんだよね。
753デフォルトの名無しさん:2007/09/30(日) 22:25:20
>>749
実際は、もうすこし条件があるんじゃないですか?
私はたとえば、

./program -a -b -c executable_name -d -e -f

で、executable_name が登場した後の -d -e -f は executable_name へのオプションだか
ら、program_optionsライブラリにはスルーさせたいと思ったことがあって、それならごく簡単
なextra_parser (ちょっとした文字列比較のみ) でどうにかなりました。
754デフォルトの名無しさん:2007/10/01(月) 00:02:52
boost.functionで、<>の中を関数プロトタイプのように書けるとおもいますが、その仕組みをおしえてくだsai。
boost::function<int hoge(int a, int b)> f;
みたいなやつです。
755デフォルトの名無しさん:2007/10/01(月) 00:20:56
最初にクラステンプレートfunctionを前方宣言しておいて、
function<R ()>は
function0<R>を継承するよう部分特殊化。
function<R (T1)>は
function1<R, T1>を継承するよう部分特殊化。
function<R (T1, T2)>は
function2<R, T1, T2>を継承するよう部分特殊化。
以下function10になるまで繰り返し。

たぶんこんな感じ。
756デフォルトの名無しさん:2007/10/01(月) 00:57:22
>>755
ありがとう。
757デフォルトの名無しさん:2007/10/01(月) 01:28:26
BOOST_STATIC_ASSERT(boost::is_same<U,double>::value); が、マクロに2引数渡すなゴルァって言われて
エラーになってしまうんですが、どうしたらいいでしょうか。
758デフォルトの名無しさん:2007/10/01(月) 01:46:57
>>757
BOOST_STATIC_ASSERT(boost::is_same<U BOOST_PP_COMMA( ) double>::value);
759758:2007/10/01(月) 01:51:51
あとヘッダはこれ
#include <boost/preprocessor/comma.hpp>
760デフォルトの名無しさん:2007/10/01(月) 01:57:16
BOOST_STATIC_ASSERT((boost::is_same<U,double>::value));
761デフォルトの名無しさん:2007/10/01(月) 01:57:52
>>757
プリプロセッサは::を扱えないから仕方ない
762デフォルトの名無しさん:2007/10/01(月) 02:10:38
>>761
ここでうまく扱えてないのは :: じゃなくて <> の引数リストね。
763デフォルトの名無しさん:2007/10/01(月) 02:14:13
>>760
イイ!
764デフォルトの名無しさん:2007/10/01(月) 02:38:05
このスレの皆様は起きてるのかな。よかったらこれ、教えてもらえませんか?
http://pc11.2ch.net/test/read.cgi/tech/1190745673/109n
あっちのスレで。
765デフォルトの名無しさん:2007/10/01(月) 02:45:38
>>762
普通に間違えて書いてた・・訂正thx
766764:2007/10/01(月) 04:14:27
MPL初心者です。MPLで遊んでいてちょっと詰まったので質問させてください。
  typedef 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;
みたいなリストに対して、(つづく)
767764:2007/10/01(月) 04:15:09
(>>766の続き)

  template<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>, ここ> はどう書いたもんでしょうか。
768デフォルトの名無しさん:2007/10/01(月) 06:07:24
メタ関数
template<bool B, int V1, int V2>
struct hoge {}
を用意して、lambda<hoge, _1, _2, V>しとく
769デフォルトの名無しさん:2007/10/01(月) 06:54:53
BOOST_STATIC_ASSERT って、
#include <cassert> の assert() マクロに比べて
何が嬉しいの?
770デフォルトの名無しさん:2007/10/01(月) 07:05:56
assertは実行時に失敗する
static assertはコンパイル時に失敗する

失敗がはやければ立ちなおれるかもしれないだろ?
771デフォルトの名無しさん:2007/10/01(月) 07:22:52
772デフォルトの名無しさん:2007/10/01(月) 07:25:53
当然だけどコンパイル時定数しか扱えないよね。
sizeof のチェックとかに使うことが多いのかな?
あんまり使い道思いつかないんだけど。
773デフォルトの名無しさん:2007/10/01(月) 09:19:09
>>72
素で言ってるのか?
template ってコンパイル時にしか使えないから使い道思いつかないって
言ってるのと同じだぞ
774デフォルトの名無しさん:2007/10/01(月) 09:24:59
どっちでも意味がとれるミスタイプだなw
775デフォルトの名無しさん:2007/10/01(月) 10:21:11
>>773
ええ〜テンプレートは使いまくりだけどさ、
マジで BOOST_STATIC_ASSERT が便利に
使える場面ってのがよくわかんなくって。
あほな俺になんか実例紹介してくれ。
776デフォルトの名無しさん:2007/10/01(月) 10:35:26
検索かけてみればboost内では
BOOST_STATIC_ASSERT( is_xxx< X >::value );
みたいにtype_traitsとの組みあわせで使われてるのが多いようだ
777デフォルトの名無しさん:2007/10/01(月) 19:20:10
なるほど
778デフォルトの名無しさん:2007/10/02(火) 04:13:07
メタプログラミングするときメタ関数の戻り値をチェックしたり。
mplとか使わないならconcept checkで大体用は足りるかも。
779デフォルトの名無しさん:2007/10/02(火) 10:49:53
今の STL ってコンセプトチェックしてくれないよね?
って俺が使ってる VC++8 についてくる STL のことしか
知らないんだけどさ。

SGI のやつとかはコンセプトチェックしてくれるの?
780780:2007/10/02(火) 11:08:49
事故解決しました
781デフォルトの名無しさん:2007/10/02(火) 11:59:29
boost::optional なんてのを知った。
いままで、エラーの流れとデータの流れは分離せよ、
という自戒から意味のある値を返せない時は例外を
投げてたんだけど、「意味のある値が返せない」
ってことを返せるんだよね・・・

同様のケースでは今まで NULL ポインタかえしたり、
たとえば 0 より大きな値をとることが分かっている
関数が 0 を返すことでエラーと見なしたりしていて、
自分はそういうの気持ち悪いなぁ、って思ってたんだけど、
なんかその自戒が崩壊していきそうだ。
782デフォルトの名無しさん:2007/10/02(火) 12:16:08
世の中、エラーではないけど意味のある値を返せないという状況もある。
783デフォルトの名無しさん: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;
 }
}
--
値保持変数と有効フラグ変数を持ち回る必要がなくなるじゃぁないか。
784デフォルトの名無しさん:2007/10/02(火) 12:33:14
なんかさ、こんなのがあったらいいなぁ、ってのが
boost にはたいていあるよな。で、自前で作ってた
のよりもはるかによく考えられて設計&実装されてる。

俺って不要なんじゃね?
今頃気づいた。
785デフォルトの名無しさん:2007/10/02(火) 12:39:27
>>784
何を言う。boostは部品だ。つまり君は、部品をどう組み立てるかに専念すればいいということだ。
786デフォルトの名無しさん:2007/10/02(火) 12:45:33
じゃ、俺、生きててもいいんだ…

カーチャン
787デフォルトの名無しさん:2007/10/02(火) 12:47:49
http://pc11.2ch.net/test/read.cgi/tech/1139266461/
            _,,‐─-v‐、,,、
         ,,-‐'": : : : : : : : : : `ヽ
        /: : : : : : : ,,__ : : : : : : \
      r': ,、,,.-─''"゛   ミ : : : : : : : 'i、
       `/ /        ミ_ : : : : : : :,、}
      i l    _,,..-‐^‐-、 `゙i: : : /l.l|
      i、}‐-、 ヽ;;/,rェッ;;'"  ゙ー' 9iリ!
      |  ',tテi  ヽ='"     ゞ t'
       |  'i"´| , -、         ヽ-、,,___
       |  '}、 !,,tu'"  ヽ、  ,l: ‐-‐" }: : : : :
       }   lヽ、__,,,.-‐ヽ  /: : : : : : /|: : : : :
     ,r/  /: : :ヽー‐'  ノ: : : : : : : / .|: : : : :
     /: \ /: : : : : 丶,, -''_: : : : : : /  |: : : : :
    /: : : : :ヽ/: : : : : : : ヾ''‐--‐ヽ   |: : : : :
   /: : : : : : : : : : : : : : : : : : ヽ\: : /   |: : : : :

     ブーツ=デ=ヤーレ[Buits De Yale]
         (1955〜 フランス)
788デフォルトの名無しさん:2007/10/02(火) 13:20:03
>>783
*使ってうまくセットにしたって感じだよね。
多値好きな俺には堪えられない。
789デフォルトの名無しさん:2007/10/02(火) 13:52:12
boostは部品だが、boostを使ったソフトウェアも、ソフトウェアを動かすOSも、コンピュータそのものも、
それが吐き出したデータも、データを利用する部署も、世の中は全て部品だ。
そして784の作る部品よりも全て別の人が作った部品の方がよく考えられて設計、実装されているならば、
784は不要な存在であると言える。
どうでもいいけど>>787の元ネタってアーサー・ケストラーだっけ?
790デフォルトの名無しさん:2007/10/02(火) 16:07:10
>>784
なんかマ板じゃないけど愚痴っちゃうけど。
いくら努力したって頂点付近にいる人間にはなれないわけよ
そんな中で俺の存在意義って見出せないんだよなー
とか思ってもう5年。
791デフォルトの名無しさん:2007/10/02(火) 16:11:42
プログラム書くのなんて資本が要るわけじゃなし、他の分野と比べれば
割と誰でも頂点に行ける世界だよ。
792デフォルトの名無しさん:2007/10/02(火) 16:34:03
>>780
無限ループktkr
793783:2007/10/02(火) 17:07:57
>783のコードは検索して引っ掛かったものをそのまま貼ったんだけど、
どうせなら引き数は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;
 }
}
--
帰ったら試してみよ。
794デフォルトの名無しさん:2007/10/02(火) 22:53:55
>>790
どんな天才も、お前の代わりにトイレには行けないんだよ!
795デフォルトの名無しさん:2007/10/02(火) 23:18:56
boostって環境依存なライブラリじゃないんでしょ?
ならboost/threadってどういうこと?
796デフォルトの名無しさん:2007/10/02(火) 23:21:06
は?
797デフォルトの名無しさん:2007/10/02(火) 23:22:03
windowsとか、特定の環境じゃないと使えないじゃん
798デフォルトの名無しさん:2007/10/02(火) 23:30:10
誰が「boost全体が」環境非依存なんて言った?
799デフォルトの名無しさん:2007/10/02(火) 23:33:47
>>795
Windows APIを使った実装とpthreadを使った実装を用意して、
環境次第でどっち使うかが切り替わるようになっている。
もちろん、どっちも使えない環境ではアウト。
800デフォルトの名無しさん:2007/10/02(火) 23:48:39
>>790
それは逆だと思うね
天才のミス(バグ)を凡人が修正できるのはプログラミングの分野だけだ
801デフォルトの名無しさん:2007/10/02(火) 23:58:59
天才とか凡才とか、そんなこだわりを持ってない奴が一番巧いんだよ
802デフォルトの名無しさん:2007/10/03(水) 00:00:48
>>783
ひどすぎる

・IterT を IteratorType と書きミス
・ValueT を iterator_traits<> から求めず、なぜかテンプレート引数で受け取っている
・ループの最初で IterT last = begin とし、++begin からループすれば
毎フレーム lastValue をチェックする必要は無いし、ValueT も不要にできる
・そもそも boost::optional<> 使う必要が無い
・std::unique_copy と std::ostream_iterator を使え
803デフォルトの名無しさん:2007/10/03(水) 00:09:19
>>801
なんだそのうまい事いったな的なセリフは。
804デフォルトの名無しさん:2007/10/03(水) 00:10:27
boost.Interfaceのtemplate based IDLはまだかね?
作者のうちの一人は変な言語作って、OOTLすら更新止まってるし…
今のところはboost MLでjoelさんがマクロベースIDLにケチ付けたときに示した方法でやってるけど
あの方法もメソッドの型をいちいちインタフェースとは別に定義しなきゃならんから
二度手間になって、マクロベースIDLと同じくらいダサいし…
なんかインターフェース定義の決定版みたいなものはないのかのぅ
805デフォルトの名無しさん:2007/10/03(水) 03:14:37
とりあえず自演乙
806デフォルトの名無しさん:2007/10/03(水) 03:45:59
Boost.Interfacesって
仮想関数と比べて
どの程度のメリットがあるの?
807デフォルトの名無しさん:2007/10/03(水) 05:28:48
俺、メソッド名とか覚えられないから
Visual Studio 2005 の IntelliSense がないと作業効率半減。
ほかの IDE といえば emacs (IDEか?) と Eclipse CDT しか
使ったことないんだけど、補完機能に優れているものって
Visual C++ のほかになにか候補ある?

boost ってテンプレート多用のせいか IntelliSense が
混乱してだんまり決め込むことも多いんだけど、最近
IntelliSense を混乱させる原因がわかってきたんで
boost のヘッダファイルを書き換えて(といっても
セマンティックスは等価な別の書き方にしてるだけ)
IntelliSense friendly な boost を作成中。
808デフォルトの名無しさん:2007/10/03(水) 08:31:55
boost::xtime って使い方がよくわからない・・・
というか、スレッドライブラリの使い方について
日本語での説明ってないかなぁ。
そろそろ _begin_thread (Win32) とかを
生で呼び出すのがみっともなく見えてきた。
809デフォルトの名無しさん:2007/10/03(水) 11:23:24
>>806
継承っていう非常に強いクラス間の結合を回避できるってのが一番大きいことなんじゃないかな?
まぁvtblが要らんからインターフェースを実装するクラスのサイズが少し小さくなるとか、
vtbl経由じゃなくて直接インスタンスのポインタから呼びだされるから少し呼びだしのコストが減るとか
ちょっとしたメリットもあるけどさ
810デフォルトの名無しさん:2007/10/03(水) 12:55:44
つ 実行時継承
811デフォルトの名無しさん:2007/10/03(水) 13:31:53
仮想関数でコンパイラでチェックをしながら作って
CRTPで最適化するってのがいい気がする。
812デフォルトの名無しさん:2007/10/03(水) 13:44:44
>>807
emacs + flymake
813デフォルトの名無しさん:2007/10/03(水) 14:02:36
intellisenseの代替になってねーじゃん
814デフォルトの名無しさん:2007/10/03(水) 15:20:25
boost::optional とか内部的に boost::mpl を使っているのが
あるけど、boost::mpl みたいに高度(変態)なテンプレート
の使い方していると IntelliSense は混乱するみたいだねぇ。
815デフォルトの名無しさん:2007/10/03(水) 18:04:31
2008で改善…か?
816デフォルトの名無しさん:2007/10/03(水) 18:09:40
真面目にパースしてたら重くなるだけじゃね
817デフォルトの名無しさん:2007/10/03(水) 19:14:32
boostに参加したいけど英語できないし諦めるわ。
818デフォルトの名無しさん:2007/10/04(木) 00:26:03
BOOST_PP_SEQの要素をカンマで区切って結合するにはどうしたらいいのでしょうか?

以下のようにやると、
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))
819デフォルトの名無しさん:2007/10/04(木) 00:55:23
>>818
コールバックマクロが裸のコンマを含むトークン列に展開されると色々まずい。
BOOST_PP_SEQ_ENUMを使うべし。
820818:2007/10/04(木) 00:56:29
>>819
ありがとう。
BOOST_PP_SEQ_ENUM(SEQ)
でできました。
821デフォルトの名無しさん:2007/10/04(木) 01:16:28
>>806 >>809
superclass に virtual 書き忘れているケースで有効
822デフォルトの名無しさん:2007/10/04(木) 01:59:58
>821
それだけかよっ
gccなら警告してくれるんだぜ?
823デフォルトの名無しさん:2007/10/04(木) 02:08:10
基底クラスを自分が作ってないという状況を想定するナリよ
824デフォルトの名無しさん:2007/10/04(木) 02:33:00
>>822
そういう問題じゃないだろw
設計として上の継承階層だけvirtualにしたいケースだろ。
>>821は「し忘れてる」なんて書いてるけど、boost.interfaces使っても、
規定クラスの方もvirtualになるわけじゃないんだから。
825デフォルトの名無しさん:2007/10/04(木) 03:22:43
しかし、つくづくtemplateって凶悪だよな。
826デフォルトの名無しさん:2007/10/04(木) 03:36:20
降りるヤツと残るヤツ・・それだけだ
827デフォルトの名無しさん:2007/10/04(木) 09:12:02
いわゆるアクセス関数 (get/setみたいなメソッド)のために
便利な仕組みって boost に用意されていたりしません?
828デフォルトの名無しさん:2007/10/04(木) 18:43:14
中の人じゃないけど。
http://d.hatena.ne.jp/Cryolite/20041108
829デフォルトの名無しさん:2007/10/04(木) 19:13:41
レビューってもうされてるのかな?
http://svn.boost.org/trac/boost/browser/sandbox/boost/property
830デフォルトの名無しさん:2007/10/04(木) 19:49:43
なんかキモイね
831デフォルトの名無しさん:2007/10/05(金) 06:55:43
似たようなの作ろうとした事あるけど var.prop.member() のように
直接プロパティのメンバにアクセスできなくて諦めた。
やっぱC++0xを待つしかないか。
832デフォルトの名無しさん:2007/10/05(金) 13:25:26
C++0xでは言語仕様としてそういう機能が入るの?
833デフォルトの名無しさん:2007/10/06(土) 01:32:23
mplで質問です。

mplでは、文字列のリテラルを扱うことはできるでしょうか?
具体的には、3文字または4文字(それ以外はない)の文字列リテラルを受け取って、ある文字cが入っていれば
mplのtrue_、入っていなければfalse_を返すメタ関数を書きたいのです。

可能でしょうか?
834デフォルトの名無しさん:2007/10/06(土) 02:43:19
>>832
N2389のリストにはそれっぽいもの(N1615)があるが、Not ready for C++0x になってる
残りの期間を考えると採用される可能性は低い

>>833
たぶん無理
835デフォルトの名無しさん:2007/10/06(土) 08:46:05
>>834
じゃぁ言語仕様としてじゃなくてやっぱりテンプレート
としての実装でやらなきゃだめなんだね。
例の boost の sandbox のやつが正式に入ってくれればいいなぁ。
836デフォルトの名無しさん:2007/10/06(土) 12:18:52
要らないなぁ
837デフォルトの名無しさん:2007/10/06(土) 13:31:44
言語仕様に変更が必要な割にはメリットが薄いなぁ
838デフォルトの名無しさん:2007/10/06(土) 13:35:39
Propertyそのものはいらないな。
やっぱりtemplateで。
839833:2007/10/06(土) 16:50:14
>>834
無理なんだ...ショボーン
840デフォルトの名無しさん:2007/10/06(土) 17:14:02
getだのsetだの関数にしなくても
コピー代入演算子あたりのオーバーロードを駆使すれば
VB的なプロパティは実現できるではないだろうか
841デフォルトの名無しさん:2007/10/06(土) 17:20:46
メンバが全部ユーザ定義型ならそれっぽくできるだろうけど・・・
842デフォルトの名無しさん:2007/10/06(土) 17:25:34
組み込み型から派生したクラスが作れればいいのに
843デフォルトの名無しさん:2007/10/06(土) 17:29:10
schemeがcontinuationをfirst class objectにしたみたいに、
C++もreference/dereferenceを扱えるようにすればいいのじゃ。
844デフォルトの名無しさん:2007/10/06(土) 20:33:13
>>833
http://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]; } ;

とか試してみたが、コンパイル通らんね。
どうにかならんのかなこれ。
845デフォルトの名無しさん:2007/10/06(土) 20:43:06
template<char C1, char C2 = '\0', char C3 = '\0', char C4 = '\0'>
struct Z

Z::<'a', 'b', 'c'>::value

または、全てのコンパイラでいけるのかしらんけど
template<unsigned int C>
struct Z

Z<'abc'>::value
846833:2007/10/06(土) 20:46:08
template<const char* S>
struct 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;
}

はどうもコンパイルできるっぽいです。ありがとうござました。
847デフォルトの名無しさん:2007/10/06(土) 20:53:55
template<char const *STR> struct Test
{
 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つけたらいけちまった。なんてこった…。
848833:2007/10/06(土) 21:14:28
>>846
だー
クラス外で初期化するんじゃ、全然コンパイル時の計算にならんですね。orz。
849デフォルトの名無しさん:2007/10/06(土) 21:50:30
つーかな

enum{
AAA = "a"[0]
};

をコンパイルしたら分かると思うけど
"a"[0] という式がもうコンパイル時定数式とならないからムリなの。
850デフォルトの名無しさん:2007/10/06(土) 22:03:13
おっしゃるとおりで。
C++0xでは何か変化あります?
851デフォルトの名無しさん:2007/10/06(土) 23:34:58
おまいらDに負けそうですよ
852デフォルトの名無しさん:2007/10/06(土) 23:58:02
namespace po = boost::program_options ;

po::options_description desc("options") ;
desc.add_options()
  ("hage", po::wvalue< std::wstring >()->default_value("Bjarne Stroustrup") , "hage")
 ;

このコードをコンパイルしようとすると、std::wstringからstd::stringへ、lexical_castしようとしてエラーになるのですが、
あきらめるしかないのでしょうか?
853デフォルトの名無しさん:2007/10/07(日) 00:01:44
脊髄で答えるけど、禿かビャーネスポスポのどちらかor両方にLをつけてないからじゃないの?
L"hage" な。
854デフォルトの名無しさん:2007/10/07(日) 00:05:43
書き間違えてました。
ちなみに、

Lを付けないと、default_valueはstd::wstringを引数に取るのでコンパイルエラー
Lを付けると前述の通り。
855デフォルトの名無しさん:2007/10/07(日) 00:26:09
>>852
> Throughout this document "Unicode support" is a synonym for "char to wchar_t conversion" support
856852:2007/10/07(日) 00:52:03
今日3時に書いた自分のブログの愚痴が、もうgoogleに拾われて、しかも上位に来るとか、何のギャグですか。
857デフォルトの名無しさん:2007/10/07(日) 00:56:47
虫さんか。
まぁ、po使ってる奴が少ないんだろうさ。
858デフォルトの名無しさん:2007/10/07(日) 01:24:32
調べ者してたらgoogleの三番目に出てきたページが
過去に自分がこの板で質問した内容だった時の脱力感
859デフォルトの名無しさん:2007/10/07(日) 01:27:07
Boost使いなどみんなそんなもんだ。
>>826 でいうと大体いなくなったからな。
860デフォルトの名無しさん:2007/10/07(日) 03:58:10
最近boostを知ったんだけどかなり使えそうだね
これ知らずにC++やってた(/д\;)ハズカシ
861852: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;
}


メンバ特殊化って便利だね。
862デフォルトの名無しさん:2007/10/07(日) 04:40:00
C++相談室part56のこれ相当のものって、Boostに入ってますか?

template<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()はちょっと違うよね。
863862:2007/10/07(日) 05:33:37
http://www.ddj.com/cpp/197800525?pgno=7 の方法で長さを出す奴でもかまいません。

// 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)) という。
864デフォルトの名無しさん:2007/10/07(日) 10:47:01
>850
既に規格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 が使えそうな気がする。
865デフォルトの名無しさん:2007/10/07(日) 11:28:18
866デフォルトの名無しさん:2007/10/07(日) 11:39:34
>>864
extentだと変数ではなく型を渡す羽目になるような。
typeofがあることを前提とするなら問題ないけど。
867デフォルトの名無しさん:2007/10/07(日) 19:30:20
>>866
VC8って結局boostのtypeofは使えるの?つかえ内の?
868デフォルトの名無しさん:2007/10/07(日) 21:38:48
今朝Boostを知った新参者です。
コンパイラはVC++6を使ってます。

質問ですがBoostのmatrixを使って、
複素数の行列の計算は可能でしょうか。
実数行列matrix<double>
複素行列matrix<complex>
のような感じにしたいのですが。
complexは標準ライブラリのを使おうと思ってます。
(他に推奨ありますか?)

よろしくお願いします。
869デフォルトの名無しさん:2007/10/07(日) 21:47:48
VC6か……
stlportでもいれないとな…
870デフォルトの名無しさん:2007/10/07(日) 21:50:17
VC6か・・・・
871デフォルトの名無しさん:2007/10/07(日) 21:51:11
vc6か。。。。
872868:2007/10/07(日) 21:53:03
ええっ
VC6の時点で試合終了ですか
873デフォルトの名無しさん:2007/10/07(日) 21:58:55
まだサポートしてたっけ
VS2005にすれば
874デフォルトの名無しさん:2007/10/07(日) 22:00:35
諦めたらそこで試合終了だy・・・VC6か・・・諦めたら?
875デフォルトの名無しさん:2007/10/07(日) 22:01:05
vc2005EE + WTL で無料でwinアプリ作れちゃうよ
876デフォルトの名無しさん:2007/10/07(日) 22:03:32
微笑ましいなw
877868:2007/10/07(日) 22:06:33
とりあえずstlportを入れてみました。
これで何とかなりますか?
878868:2007/10/08(月) 00:14:19
何かもう駄目っぽい気がしたので、とりあえずcomplexは保留します。
(できれば知りたいですが)

実数行列だけ考えることにして、ためしに
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 が設定されます。
↑こんな感じのエラーが大量に発生してやばいです。

よろしければ、この解決策を教えていただけないでしょうか。
879デフォルトの名無しさん:2007/10/08(月) 00:18:45
VC2005を入れろ
880デフォルトの名無しさん:2007/10/08(月) 01:25:39
素直にVS2005のEEでも、入れろよ。
みたところATLやMFCが必要だとは思えんし。
881868:2007/10/08(月) 03:41:01
VC2005入れたらエラーも発生せずできました。
3時間くらい悩んだりしていた甲斐があったと思います。

これは行列の固有値計算もできるんですか?
882868:2007/10/08(月) 03:56:05
アッー!
matrix<complex<double>>
もできた。
さっきはできなかったのに
なんかもう、色々許せない。VC6は許せない。
883デフォルトの名無しさん:2007/10/08(月) 04:01:14
>>869-874 を噛みしめておけw
884デフォルトの名無しさん:2007/10/08(月) 10:16:03
boost::regexでsmatch 使うとそれ以降でインテリセンスが死んじゃうみたいなんだけど
回避策ありませんか?

VC2005EEです
885デフォルトの名無しさん:2007/10/08(月) 10:40:24
インテリセンスは死ぬためにあるのです
886デフォルトの名無しさん:2007/10/08(月) 10:47:41
boostとインテリセンスは千日戦争に突入しているので、見守ってあげてください
887デフォルトの名無しさん:2007/10/08(月) 10:50:54
インテリセンスで不具合がおきている人は日本語版VisualStudio使っているのかな?
888デフォルトの名無しさん:2007/10/08(月) 11:15:56
>>887
お、そこには思いが至らなかった。
英語版の 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 あたりが
その代表かなぁ。
889デフォルトの名無しさん:2007/10/08(月) 11:26:14
>vector_type を使わずに生のまま
なんのこと?生?

>ところで、こういう宣言文での typename って必須?
必須
890デフォルトの名無しさん:2007/10/08(月) 11:29:14
英語版VisualStudioだと問題ないなあ。問題といっている
ヘッダファイル使っているんだけどね。
891デフォルトの名無しさん:2007/10/08(月) 11:39:10
>>888
どうもです
書き直してみたけどやっぱり駄目みたい

便利な物は失うと辛いな(´Д`;)
892デフォルトの名無しさん:2007/10/08(月) 11:42:25
>>889
「生」ってのは、その直前に
typedef std::vector<sub_match<BidiIterator>, Allocator> vector_type;
っていう宣言文があって、そこで宣言した vector_type を使わずに、
っていう意味で使った。

typename が必要になるのってどういうケースなんだろう。
じつは typename よくわかってない。テンプレート引数に
class って書いてたのが最近は typename って書くのが流行り?
って程度の認識。
893デフォルトの名無しさん:2007/10/08(月) 11:43:52
>>891
え?だめ?おかしいなぁ。
Visual Studio 2005 Professional SP1 日本語版
boost 1.34.1 なんだけどなぁ。
894デフォルトの名無しさん:2007/10/08(月) 11:51:46
>>892
std::vector<sub_match<BidiIterator>, Allocator>::const_iterator
ってあったら、これが型なのかそうじゃない(例えばstaticメンバ変数)のかコンパイラには分からん
だからtypenameで明示しない限り型じゃないとみなすことになってる
895デフォルトの名無しさん:2007/10/08(月) 12:00:09
>>894 なるほど、クラスメンバと混同するからか。
typedef std::vector<sub_match<BidiIterator>, Allocator> vector_type;
それでこの場合には typename がなかったのか。
896デフォルトの名無しさん:2007/10/08(月) 12:03:44
>>891
ncb ファイルを一度削除しないとだめかもね。
Visual Studio が起動している間に削除してもだめだよ。
ちゃんと終了してから削除しないと。
897デフォルトの名無しさん:2007/10/08(月) 12:37:17
試しにvector_typeを全部「生」にしてみたけど駄目だった
やり方がどこか違うのかな・・・

残念
898デフォルトの名無しさん:2007/10/08(月) 16:46:59
2005だが、
インテリセンスが混乱したら
キャッシュ(ncbファイルだっけ)を削除したら一時的に直る。
899デフォルトの名無しさん:2007/10/09(火) 00:08:10
>>896>>898
ありがとうございます

遅レスですがncb消しても駄目ですた
もう駄目ぽ
900デフォルトの名無しさん:2007/10/09(火) 02:46:42
基本的にboost使う奴が悪いんだから、このさいインテリセンスは諦めましょう。
901デフォルトの名無しさん:2007/10/09(火) 03:07:14
特定のライブラリのみビルドする方法は用意されているのでしょうか?
902デフォルトの名無しさん:2007/10/09(火) 03:34:13
>>901
どーだろ。でも、ライブラリ別に.soとか.aができるから、必要な奴だけリンクすることは可能。
だから部分ビルドできるかはあまり関係ない気もするんだが。
903デフォルトの名無しさん:2007/10/09(火) 04:30:10
ところで C++0x ではクロージャの機能は入るんですか?
904903:2007/10/09(火) 04:31:35
905デフォルトの名無しさん:2007/10/09(火) 10:06:11
>>904
その Wikipedia の記事は、どういう新機能が会議で提案されてるかをかいてるので、どれが実際に C++0x に入りそうかは別個の話だよ。
http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2007/n2389.html
をみたかぎりではλ式は間に合わなさそう。

これ以上はスレ違いなので C++0x スレで。
906デフォルトの名無しさん:2007/10/09(火) 10:09:41
と思って書き込んでからちゃんとよんでみたら、なんとかなりそうなのかな。よくわかりません。失礼しました
907デフォルトの名無しさん:2007/10/09(火) 17:43:57
VC++2005EEの環境で>>878のコードをビルドしてみたんですが、リンクエラーが出てしまいます。
ランタイムライブラリを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)" は未解決です。
908デフォルトの名無しさん:2007/10/09(火) 17:46:46
907の続き

Debugのエラーはあまりにも長いので、とりあえずReleaseだけにしておきます。
どこか設定が間違っているのでしょうか?
お願いします。
909デフォルトの名無しさん:2007/10/09(火) 18:13:43
>>907
2005、Boost1.34だが、
31->33行目はoperator()で書き直せば通ったけど?
A[0][0]=1.0; -> A(0,0)=1.0;
910907:2007/10/09(火) 19:49:15
>>909
A[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を入れました。

リンクエラーの意味がわからないので、どうすればいいのかさっぱり・・・。
911909:2007/10/09(火) 20:32:32
>>910
ランタイムライブラリは
マルチスレッド(デバッグ)?DLL
使わないとエラー大量に出るよ。
lib,includeディレクトリには1つのバージョンのみのBoostだけ入れてよ。
Boost1.34.1
これでもできないならなんか環境ファイルが壊れてるのかもしれん。
912907:2007/10/09(火) 22:44:28
>>911
1.34.1入れてビルドしてみましたが、やはり>>910に書いたエラーが出てしまいます。
(このエラーが出るということは、コンパイラが1.34.1のublasに対応してないということですよね?)

1.32.0でビルドすれば、コンパイルは通るんですが、
どのラインタイムライブラリでやっても、>>907のリンクエラーかそれよりたくさんのリンクエラーが出てしまいます。
リンクエラーの内容がstd::basic_ostreamとかだったりするのは、
やはり環境変数がちゃんと設定できていないか、壊れているかそのあたりがあやしいですか?
913デフォルトの名無しさん:2007/10/10(水) 01:38:03
boost::test::unit_test ってテスト終了時に
メモリリークの検出までやってくれるんだね。
どういう方法でリークを検出しているんだろう。
もしかしてメモリアロケータを標準のものから
置き換えてなにかやってるのかな?
914デフォルトの名無しさん:2007/10/10(水) 02:44:06
>>912
通りすがりだけど・・・

#include <ublasのヘッダもろもろ>
int main()
{
// 何も書かない
return 0;
}

でコンパイル通る?
経験則から言うとVC7以上であればublasのバージョンは問題ないと思う

>>913
unit_testのメモリリーク検出良いよね
うっかりポインタ操作をミスしていたのを見つけてくれたことがあるよ
915907:2007/10/10(水) 04:01:05
>>914
ヘッダだけのコードを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を使うとリンクエラーが出るっぽいです。
原因がスレ違いで申し訳ないです。
あとは自分でなんとかします。
レスくれた方々、ありがとうございました。
916デフォルトの名無しさん:2007/10/11(木) 02:58:54
unit_testの話題が出ているので...質問させてください

他のライブラリを使用したコードのテストをするため
unit_testを利用しようとしたところ、リンカで次のエラーを得ました

***.lib(main.obj) : error LNK2019: 未解決の外部シンボル _MAIN__ が関数 _main で参照されました。

unit_testがmain関数を横取りしていることあたりが原因だとは思うのですが
何とか上手く回避できないものでしょうか?
お心当たりのある方はご教示いただけると幸いです
917デフォルトの名無しさん:2007/10/11(木) 03:31:31
unit_testを使わない

boostなんて無理してまでも使うもんじゃない。
918デフォルトの名無しさん:2007/10/12(金) 07:06:33
お前ら、ステートマシンはどのライブラリを使っていますか?
Cで書いた糞自作ライブラリから乗り換えようと思ってるんですが。
919デフォルトの名無しさん:2007/10/12(金) 07:29:57
糞自作ライブラリから乗り換えようと思った理由は?
920デフォルトの名無しさん:2007/10/12(金) 09:11:09
921デフォルトの名無しさん:2007/10/12(金) 09:15:29
FSMは昔GPGに載ってたAI用のやつをいじって使ってる
922デフォルトの名無しさん:2007/10/12(金) 09:32:38
>>918
Cベースで、状態遷移時のコールバック関数へのポインタが
むき出しだったり、いやなことが多いのと、あのころの
自分を忘れたかったから。

>>920
お、レビューが始まるんですか。
ちょっと前に話題が出てた Property も?
と思ったらこれは Property Map か。。

http://www.boost.org/libs/statechart/doc/index.html
これと比べてどちらを使うべきかについてのアドバイスのような
ページがどっかにあったんだけど、以前読んだ時に結局
判断がつかなくてずっと自作ライブラリ使ってたんだけど、
もう嫌になったから・・・
923デフォルトの名無しさん:2007/10/12(金) 20:21:25
typedef使えばいいような
924デフォルトの名無しさん:2007/10/13(土) 14:37:13
テキストエディタ使ってコマンドラインからコンパイルしようとすると
boost関連のincludeが見つからないと怒られたので
vsvars32.batにboostのincludeとlibパスを追加してみたら
今度はfatal error LNK1120: 外部参照 1 が未解決です。と出る

どうしたら良いのでしょうか?
925924:2007/10/13(土) 14:42:35
書き忘れ

VC2005EEです。。。
926デフォルトの名無しさん:2007/10/13(土) 14:56:29
具体的に何が見付かりませんと表示されるだろう。
そっち見ないとわからない。たぶんスレ違いの気がするけれど。
927924:2007/10/13(土) 15:02:11
error LNK2019: 未解決の外部シンボル
"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 が未解決です。


長いんでカットしてました
スレ違いならごめんなさい
928デフォルトの名無しさん:2007/10/14(日) 19:34:47
うちはうまくうごいとるよ
929デフォルトの名無しさん:2007/10/14(日) 20:12:48
boostでまだ使えないvc向けのものがあるね
930デフォルトの名無しさん:2007/10/14(日) 23:32:14
>>927
VC のオプションの「C++ の例外を有効にする」がいいえになってるか
明示的に BOOST_NO_EXCEPTIONS を定義したのでは?
931デフォルトの名無しさん:2007/10/15(月) 15:02:33
YAMLの実装はありますか?
932924:2007/10/15(月) 18:11:46
>>930
遅レスですいません
ビンゴでした

/EHsc オプションつけたらコンパイル通った
ありがとうございました

でも、なにもした覚えはないんだけどな・・・
933デフォルトの名無しさん:2007/10/15(月) 18:15:01
実行時型情報を使うのってあんまり気持ち良くないなぁ。
おまえらは全然抵抗ありませんか?
型に関するあれやこれやはコンパイル時に解決
されているのがC++のいいところだと思ってたんだけど。

あと、これは単なるコーディングスタイルなんだけど、
メンバ変数をアクセスするときに this-> を強制したいなぁ。
あくまで自分が間違えてメンバ変数と同じ名前のローカル変数を
作ってしまうことがあるバカ者だからなんだけどね。
まぁこれは命名規則をきっちり決めておけばいいんだろうけど。
934デフォルトの名無しさん:2007/10/15(月) 18:56:28
boostと何の関係が?
935デフォルトの名無しさん:2007/10/15(月) 19:11:01
RTTIをオフにすると、Boost のなかで使えない
ライブラリが出てくる。どのライブラリが
RTTIを要求するか、例外のサポートを要求するかについての
リストがあれば便利なケースもあるんじゃないかなぁ、とか思いながら。
さすがに組み込みで Boost の全ライブラリのサポートを
要求する人はいないと思うが、どれが使えてどれが使えないか
わかればいいなぁ。
936デフォルトの名無しさん:2007/10/15(月) 21:50:35
独り言うぜぇ
937デフォルトの名無しさん:2007/10/15(月) 22:01:11
つうか、メンバ変数は大抵 xxx_ とか m_xxx でぶつからないだろ
938デフォルトの名無しさん:2007/10/15(月) 22:56:57
インテリセンスで使いやすいように _xxx じゃ問題ある?
939デフォルトの名無しさん:2007/10/15(月) 23:08:43
>>938
頭にアンダースコアの識別子は標準ライブラリやコンパイラのベンダのためにあるから使っちゃ駄目。
940デフォルトの名無しさん:2007/10/15(月) 23:12:26
>>939
はい、間違いです。規格書読み直してくださいね。
941デフォルトの名無しさん:2007/10/16(火) 00:00:50
>17.4.3.1.2 Global names
>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ってことか?
なんにせよ俺は使いたくはないな。
942デフォルトの名無しさん:2007/10/16(火) 00:51:09
マクロとぶつかったりするととても悲しいのでやめた方が無難
943デフォルトの名無しさん:2007/10/16(火) 08:19:50
バカかお前。ぶつからねーって回転だろ
944デフォルトの名無しさん:2007/10/16(火) 19:38:49
独自のテンプレートライブラリを作るときに
boost::mplを使うときに一々ヘッダでboost::mpl::bindとか完全修飾で書くとみにくいので
namespace mpl = boost::mplとかusingを使いたいんですが

namespace my_lib {
 namespace hoge_impl {

}
945944:2007/10/16(火) 19:46:07

namespace 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とかまだよくわからないのでちょっと心配です
946デフォルトの名無しさん:2007/10/16(火) 21:56:08
それってBoostと関係あるのか?
947デフォルトの名無しさん:2007/10/16(火) 23:37:09
>>945
どんなことが起こるのを心配してるの?
見た感じ、好きにすれば、って感じなんだけど。
948デフォルトの名無しさん:2007/10/17(水) 21:01:27
struct A{
 long 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)
と書いてありますが、いまいちわかりません。
自分でイテレータ作るしかないんでしょうか…?
949デフォルトの名無しさん:2007/10/17(水) 23:03:33
>948
都合により直接メンバアクセスすることはできない。ただし、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 オブジェクトが使用されている。
950デフォルトの名無しさん:2007/10/18(木) 01:17:26
>>949
あー、なるほど。
分かりやすい解説ありがとうございます。

確かに、さっきのp2で
cout << (*(p2 + 5)).a << endl;
って添え字演算子と同じことをやると、Visual Studio がアサート失敗を出す。
vectorのイテレータが破棄されちゃうのね…。

>>948は例のためにvector使ったんで、
実は本当にtransform_iterator使いたいのはポインタだからこの問題は起こらない…。
transform_iteratorを継承してoperator[]を隠蔽してみます。
951デフォルトの名無しさん:2007/10/18(木) 02:25:28
>>950
次スレ立てよろしく
952デフォルトの名無しさん:2007/10/18(木) 07:59:28
ほーい
953デフォルトの名無しさん:2007/10/18(木) 09:13:20
>>950
iteratorは継承して作ってはいけない
954デフォルトの名無しさん:2007/10/18(木) 13:31:10
書くの面倒だけど書かないとね。
iterater_facadeとか使って。
955デフォルトの名無しさん:2007/10/18(木) 14:02:59
つーかそれ無しだと書く気が起きない
956デフォルトの名無しさん:2007/10/18(木) 17:22:44
>>781
int | ∞ を表現するのに便利そう。> boost::optional
957デフォルトの名無しさん:2007/10/18(木) 17:41:53
次スレ
Boostを語れゴラァ part5
http://pc11.2ch.net/test/read.cgi/tech/1192662575/


立てたはいいけどここに報告するの忘れてたよ
958デフォルトの名無しさん:2007/10/19(金) 02:11:15
> boost::optional
通常処理→戻り値数値
通常処理でない→戻り値NULL
という関数を試作したらNULL値が0として振る舞って失敗した事があった
そのとき代替で使ってみた。良い方法かどうかは知らないけど
959デフォルトの名無しさん:2007/10/19(金) 07:21:25
ワラ
960デフォルトの名無しさん:2007/10/19(金) 12:50:05
まさかこういうことをしたのか・・・。

int hoge() {
return NULL;
}
961デフォルトの名無しさん:2007/10/19(金) 12:53:05
そのレベルでBoost使ってたらいろいろと苦労しそうだね。
962デフォルトの名無しさん:2007/10/19(金) 13:50:12
Win32のことかー
963デフォルトの名無しさん:2007/10/19(金) 20:01:08
>>958

例外使うところなのでは?
…それがいやなら結果入れる変数を参照渡し…
964デフォルトの名無しさん:2007/10/19(金) 20:03:24
結果変数を渡すくらいならoptional使えばいいだろ
965デフォルトの名無しさん:2007/10/20(土) 10:06:12
>>963
頭固いねー
966デフォルトの名無しさん:2007/10/20(土) 11:39:48
なにいってるんだ、NULL渡したいならnullptrだろ?
967デフォルトの名無しさん:2007/10/20(土) 11:41:52
optionalあるんだからoptional使えばいいだろ
968デフォルトの名無しさん:2007/10/20(土) 12:58:50
>>966
別に NULL を返したいんじゃなくて、
エラーが識別できれば何でもいいだろう。
まさに optional の適用事例。
969デフォルトの名無しさん:2007/10/20(土) 13:28:29
boost.optionalごときにカリカリしすぎ
970デフォルトの名無しさん:2007/10/20(土) 14:22:37
tupleでいいと思うけど人気無いの?
単にエラーコードと結果両方返したいだけなら
tupleどころかstd::pairでもいいと思うけど。
971デフォルトの名無しさん:2007/10/20(土) 15:14:09
>>970
optionalの方が良いから。
972デフォルトの名無しさん:2007/10/20(土) 18:26:04
>>970
それじゃぁ、エラーコードを不用意に無視することができてしまうだろ。
エラーコードを無視させにくくするためには optional みたいな
仕組みがいい。例外もエラーを無視させない仕組みなので、
例外を使ってもいいとは思うけど。故意に無視することができるのは
どちらも同じ。

optional を使ってエラー状態を通知する方法と
例外を使ってエラーの発生を通知する方法の違いは
直情より上の呼び出し元までエラー状態が伝搬するか否か。
973デフォルトの名無しさん:2007/10/20(土) 18:26:57
>>970
俺もそう思う
std::map::insert が pair 返すし
tuple は tr1 にあるけど、optional は無いし
974デフォルトの名無しさん:2007/10/20(土) 18:53:29
DefaultConstructibleでなくても返せるようにするために
optionalは存在するんだ

もっと勉強しろこのバカチンどもが!
975デフォルトの名無しさん:2007/10/20(土) 20:42:19
全然関係ないけど
動的メモリがあまり自由でない環境だと、DefaultConstructibleでない
値ベースの型って、なにげに使い勝手が悪かったりするような
976デフォルトの名無しさん:2007/10/21(日) 00:38:49
>>974
ごめんね、ママ
977デフォルトの名無しさん:2007/10/21(日) 00:39:51
>>973
> tuple は tr1 にあるけど、optional は無いし

はい、スレ否定、来ました。
978デフォルトの名無しさん:2007/10/21(日) 12:24:18
>>975
はいはい
boost::value_initialized
979デフォルトの名無しさん:2007/10/21(日) 13:38:11
>978
value_initialized ってそういうもんだったっけ?と思ったらやっぱり DefaultConstuctible かどうかを解決なんてしないじゃん。
名前に惑わされてない?
980デフォルトの名無しさん:2007/10/21(日) 15:48:01
auto_ptr + aligned_storage = optional
981デフォルトの名無しさん:2007/10/21(日) 17:10:15
>>980
aligned_storageの説明ってどっかにあります?
982978:2007/10/21(日) 18:17:30
>>979
すいません。ご指摘のとおり。
default construtibleでない=組み込み型が初期値で初期化されない、
と勘違いしてました。
983デフォルトの名無しさん:2007/10/21(日) 18:48:46
>>981
説明っていっても、指定サイズの char バッファを指定アライメントに置くだけだよ。
BoostにもTR1にも入ってる。

今の実装だと type_with_alignment<> 経由で求まる型を使ってるけど、
C++0x では alignof/alignas あたりを使うようになると思われる。
984デフォルトの名無しさん:2007/10/21(日) 21:25:27
組み込み分野で便利そうだね
今まではマクロ使ってたけど
985デフォルトの名無しさん:2007/10/23(火) 16:33:24
シンビアンとか、Mac OS Xのドライバとか、
組み込みっぽい用途に結構使われてるからね。
986デフォルトの名無しさん:2007/10/24(水) 13:42:52
>>957
987デフォルトの名無しさん:2007/10/24(水) 23:57:28
Boostを普通にプロジェクトで使ってる?
988デフォルトの名無しさん:2007/10/25(木) 02:23:16
>>987
全部じゃないけど使っているクラスもある。
たとえば boost::shared_ptr とか boost::auto_array とか。
989デフォルトの名無しさん:2007/10/25(木) 03:54:30
ああ、C++0x の auto がまちどおしい。
型名が長くなりすぎ。推論してくれ・・
990デフォルトの名無しさん:2007/10/25(木) 09:53:14
これ以上コンパイル時間が長くなるのはイヤです
991デフォルトの名無しさん:2007/10/25(木) 10:01:22
そこで8コア並列コンパイル
Linuxのカーネルのビルドもカップ麺ができるまでに終っちゃいます
992デフォルトの名無しさん:2007/10/25(木) 17:41:23
VS2005 は、何コアまで対応しているんですか?(コンパイル)
993デフォルトの名無しさん:2007/10/25(木) 19:23:57
>>992
並行してビルドできるプロジェクトは任意に指定できるんじゃね?
994デフォルトの名無しさん:2007/10/25(木) 21:29:02
つーか、型推論で速度が遅くはならねぇだろ。
995デフォルトの名無しさん:2007/10/25(木) 22:29:18
いやいやそんな事は無い
996デフォルトの名無しさん:2007/10/25(木) 22:35:44
>>994
?コンパイル速度には影響しそうだけど
997デフォルトの名無しさん:2007/10/25(木) 23:27:55
>>996
しっかりしろ。sizeofがある時点で、typeofのようなものは簡単に実装できるなんてわかりそうなもんだろ。

そして、sizeofでコンパイル速度が落ちるか?
998デフォルトの名無しさん:2007/10/25(木) 23:33:09
auto a = hoge();

これでaの型を推論するのに時間がかかるわけがない。
これでコンパイル速度が遅くなるんなら、下の簡単なテンプレート関数でも遅くなるだろ。

template<class T>
void foo(T t){}

foo(hoge());
999デフォルトの名無しさん:2007/10/26(金) 07:32:05
?
1000デフォルトの名無しさん:2007/10/26(金) 07:32:50
(・∀・) 1000 !

次スレ

Boostを語れゴラァ part5
http://pc11.2ch.net/test/read.cgi/tech/1192662575/
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。