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


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

Boostを語れゴラァ part3



1 名前:デフォルトの名無しさん [2006/09/23(土) 15:00:11 ]
語って.はぁと part boost::mpl::int_<3> 

前スレ
part 2 pc8.2ch.net/test/read.cgi/tech/1139313234/
part 1 pc8.2ch.net/test/read.cgi/tech/1091198276/

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

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

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

boost info 
shinh.skr.jp/boost/ 

413 名前:デフォルトの名無しさん mailto:sage [2006/12/11(月) 22:56:30 ]
boostってlokiのtypelistに相当するやつあります?

414 名前:デフォルトの名無しさん mailto:sage [2006/12/11(月) 22:58:44 ]
>>413
mpl::list

415 名前:デフォルトの名無しさん mailto:sage [2006/12/11(月) 23:30:11 ]
thx

416 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 00:42:18 ]
拡張子hppって古めかしい気がするのは俺だけ?
#include で拡張子なし <boost/shared_ptr> って動きは無いのだろか?

417 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 01:17:54 ]
>>416
かつて、標準化委員会は理想に燃えていました。
拡張子などという原始的なもので、
ファイルの種類を表すべきではないという強い意志がありました。

はて、2006年になっても、その理想は実現されそうにないのですが。

418 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 01:31:13 ]
どっちでもいいけど、標準C++ライブラリと違うのは気持ち悪い

419 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 02:27:45 ]
>>417
そのへんって確か、過ちを認めて今からでも元に戻そうって動きもなかった?

420 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 03:08:53 ]
>>419
今後出る標準ライブラリに拡張子をつけられたとしても。
いまある標準ライブラリはそのまま残すしかないでしょ。
たとえこんなものでもね

// これはC99のiositreamとの下位互換性のためにあるぜ。
//実体はiostream.hな。
#include <iostream.h>

421 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 03:10:50 ]
>>419
それは、たぶんこれだろう。ちょっと違う。
www.open-std.org/jtc1/sc22/wg21/docs/lwg-active.html#456
"We should accept the fact that we made a serious mistake and rectify it, however belatedly, ..."



422 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 03:11:31 ]
拡張子ないとエヂタとか使うとき後からシンクタック指定するの面倒やん

423 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 07:58:42 ]
俺は、拡張しありでいいが、.cppと.hppはどういうわけだか好きになれない。
.Cと.hにしている。大文字小文字区別しないファイルシステムだと問題の種になることもあるが。

424 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 08:03:12 ]
>>423
なんで技術的デメリットを無視してまで理由のはっきりしない好みを優先させるの?

425 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 09:25:24 ]
趣味だから

426 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 09:48:40 ]
C++ でしか使えないようなヘッダなのに .h を使うのは嫌いだナ
(Cからでも使えるようなヘッダなら .h で問題ない)

.cpp / .hpp とか、 .cc / .hh とか、ちゃんと名前が揃っていればまあ良いんじゃないかと

427 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 09:50:51 ]
俺は .h / .cpp だな。
不揃いじゃね? と言われれば、うーん、確かにそうなんだが。

428 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 13:04:07 ]
>>427
俺もそれ。hppはなんか嫌い。

429 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 13:05:33 ]
>>416
せっかく標準がユーザー側のヘッダとぶつからない配慮してくれてんのに、
同じルールにしたら意味ないじゃん

430 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 17:13:15 ]
>>422
#includeで指定するヘッダ名は実際のファイル名である必要はない、少なくとも標準のものは。
たとえばBorland C++では適当な拡張子を付けたファイルをインクルードしている。

431 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 18:23:17 ]
>>430
理想と現実は違うよ。



432 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 18:39:42 ]
え? 理想の話をしてるんじゃないの?

433 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 20:12:44 ]
理想じゃなくて規格の話だろ

434 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 21:18:39 ]
理想の規格はどうあるべきかという話だよん

435 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 23:34:22 ]
という夢を見た

436 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 18:06:28 ]
testプログラムを1つ与えると
交差検定も自動でやってくれるようなプログラムがあったはずなのだけど
boostの中にはないの?

437 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 19:19:14 ]
>>380
いまさら亀レスで悪いんだが、
俺も同じエラーで失敗しとります。

コマンドラインのログ追っかけていたら、
MKDIRコマンドで失敗しとりました。
"MKDIR"が"MKDIR1"になってて、ディレクトリを作れないようです。
最初に
stageディレクトリを作れません。→死亡
lack of stage なのでlibs作れません →死亡
で以降すべてエラー。

俺はmsvc6.0なんで>>391も使えないし・・・
どこを直せばいいか分からぬ、、
誰か助けてorz

438 名前:デフォルトの名無しさん mailto:age [2006/12/15(金) 19:24:24 ]
丸二日スレストってるので僭越ながらageさせて頂きます

439 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 22:17:27 ]
vc8はタダなんだから落としてこいよ


440 名前:デフォルトの名無しさん mailto:age [2006/12/15(金) 22:17:45 ]
bjamのバージョンを下げたらビルドできました
でも最新のでやりたかったです。
誰かエロい人いたら
bjamの3.1.13-1
で出来るか試してみてくれませぬか、
3.1.11-1だと上手くいきました。

441 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 22:44:19 ]
そこまでしてVC6にしがみつく理由がわからん。




442 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 22:54:37 ]
gccもあるし、8にもそのうち乗り換えるさ…

つかコンパイラの話しじゃなくて、bjam3.1.13-1が動かなくない?
って話しで

443 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 23:16:56 ]
プリコンパイル済みヘッダー と boost.testって一緒に使えないのかな


444 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 23:44:45 ]
VC6は(今の基準では)C++として腐ってるからBoost向きではない

445 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 23:53:02 ]
VC6は2038年問題とかだけでも捨てるべきだろ。
少なくとも業務で使ってるってのならその会社は潰れてしかるべき。
ぜひ潰れて欲しい。

446 名前:デフォルトの名無しさん mailto:sage [2006/12/16(土) 01:39:05 ]
Cとしてしか使わないならVC6最高じゃん

447 名前:デフォルトの名無しさん mailto:sage [2006/12/16(土) 01:49:43 ]
>>466
同感!

最近 STL 使おうって思ってやっと 2005 に切り替えました!


448 名前:デフォルトの名無しさん mailto:sage [2006/12/16(土) 02:23:20 ]
激しくスレ違いで申し訳ないが…

8だとテンプレートをネスト出来たりするかね?
ならば今すぐ買いに行くさ。

449 名前:デフォルトの名無しさん mailto:sage [2006/12/16(土) 02:34:38 ]
するする。今すぐ買いに行け。

450 名前:デフォルトの名無しさん mailto:sage [2006/12/16(土) 02:36:43 ]
これか?
template < typename T >
struct Foo
{
template < typename P >
static void Bar() ;
} ;

Foo<int>::Bar<int>() ;


あるいはこれか?
template < typename T,
template<typename, typename>
class Container >
class Foo
{
Container< T, std::allocator<T> > cont ;
} ;

Foo< int, std::vector > FooVec ;

どちらもできる……が、後者は、なぜかテンプレートテンプレートパラメータのデフォルト引数が使えない。

//エラー
template< template <typename, typename = std::allocator<int> > class Container >
class Foo
{ Container<int> cont ; } ;

451 名前:デフォルトの名無しさん mailto:sage [2006/12/16(土) 02:39:46 ]
まじかよ…
部分特殊化だけかと思ってた…

今すぐ買いに行くわ
確かファミマにあったはず。アカデミックだけど。



452 名前:デフォルトの名無しさん [2006/12/16(土) 02:44:32 ]
あ〜、後者ですわ。
デフォルト指定は無理なのかぁ…、
まぁいい機会だし買いに行きま。

453 名前:デフォルトの名無しさん mailto:sage [2006/12/16(土) 02:44:41 ]
>テンプレートテンプレートパラメータのデフォルト引数
そんな言語機能があったなんて!
いったいなんのためにあるんだろう。

454 名前:デフォルトの名無しさん mailto:sage [2006/12/16(土) 03:29:27 ]
メタ関数として使えそうなんで用意したけど実際にはいまいち使えなかった、
という感じか?>テンプレートテンプレートパラメータ

455 名前:デフォルトの名無しさん mailto:sage [2006/12/16(土) 03:47:12 ]
いや、テンプレートテンプレートパラメタには意味があると思うんだが、
テンプレートテンプレートパラメタ「の」デフォルト引数ってなかなか出てこない発想じゃないだろうか。
ふつうの関数だと
void f(int (*g)(int = 7)){}
不正みたいだし。

456 名前:デフォルトの名無しさん mailto:sage [2006/12/16(土) 03:50:58 ]
普通に使いますから。
テンプレートクラスでデフォルト引数が使えるのは(allocatorなど)当たり前のことだし、
テンプレートの引数に、テンプレートクラス使えないのは不便で仕方がない。


457 名前:デフォルトの名無しさん mailto:sage [2006/12/16(土) 06:04:31 ]
そこで、boost.preprocessorですよ。

458 名前:デフォルトの名無しさん mailto:sage [2006/12/16(土) 06:06:57 ]
え、VC8でも
hoge<hage<int>>;
みたいのはできないの?

デフォルト引数を定義しなければ使えるってこと?

459 名前:デフォルトの名無しさん mailto:sage [2006/12/16(土) 06:15:31 ]
>>458
シンタックスエラー!

460 名前:デフォルトの名無しさん mailto:sage [2006/12/16(土) 06:40:06 ]
uho!

461 名前:デフォルトの名無しさん mailto:sage [2006/12/16(土) 06:46:08 ]
>>457
preprocessorで何ができると?



462 名前:デフォルトの名無しさん mailto:sage [2006/12/16(土) 12:19:11 ]
Tはテンプレート引数でコンテナ型です。

typedef typename boost::mpl::if_<boost::is_const<T>, typename T::const_iterator, typename T::iterator>::type Hoge;
typedef typename boost::mpl::if_<boost::is_const<T>, typename T::const_pointer, typename T::pointer>::type Hage;
typedef typename boost::mpl::if_<boost::is_const<T>, typename T::const_reference, typename T::reference>::type Debu;

こういうことをやりたいんですが、もっとシンプルに記述できる方法はないでしょうか?

463 名前:デフォルトの名無しさん mailto:sage [2006/12/17(日) 06:55:37 ]
プリプロセッサを使ってもシンプルにはならないだろうし、読みにくくなるだけかと。
そもそも何でそういうことがしたいのか分からない。
渡されたコンテナがconstでなければ、書き換える。
constであれば書き換えないという、奇妙な関数でも書きたいのだろうか。

464 名前:デフォルトの名無しさん mailto:sage [2006/12/17(日) 17:28:40 ]
>>462
boost::range_result_iterator< std::vector< int > >::type         // -> std::vector< int >::iterator
boost::range_result_iterator< const std::vector< int > >::type // -> std::vector< int >::const_iterator

あとは上のように獲得した iterator 型に boost::iterator_[reference|pointer] を適用

465 名前:デフォルトの名無しさん mailto:sage [2006/12/17(日) 23:17:11 ]
>>464
うわぁ、Boost.Rangeチョー便利ナリ・・・
boost::sizeとかあるし。sizeof(a) / sizeof(a[0])とかしてたのが馬鹿みたいだ。
いいものを教えてもらった、ありがとう。

466 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 08:19:06 ]
templateもろくに通らないからVC6から2005に切り替えたよ

467 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 15:00:59 ]
今度はワイド文字ストリームがろくに使えないVC 2005。

468 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 16:09:31 ]
VC 2005 SP1で直る・・・はず・・・だといいな・・・

469 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 18:20:48 ]
その SP1 では graph library が使えないということらしいが

470 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 18:23:55 ]
>>468
直ってないような気がする・・・

471 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 18:28:28 ]
いや、気がするんじゃなくて間違いなく直ってないや。



472 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 18:40:36 ]
SP1出たんだな

473 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 18:46:01 ]
STLPort使うとなぜかは知らないがlocale::globalの後でもimbueが効くようだ。

474 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 21:57:24 ]
なあ、boostいじってるC++狂の連中はWebアプリケーションはなにで
書いてるんだ?
俺、JavaもPerlもやる気しねーよ。もっとC++でWebアプリ書くフレーム
ワークとか環境とか色々あってもいいのになあとか思うんだが。

475 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 21:59:52 ]
boostいじってるC++狂の連中はWebアプリケーションなんてかったるいものは
書かないんじゃないかな

476 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 22:00:27 ]
Perlは確かに使う気しないがJavaなら別にいい

477 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 22:12:09 ]
スレ違いだと思うのでURLだけ
ws.apache.org/axis/ja/cpp/lininstall-guide.html
www.cs.fsu.edu/~engelen/soap.html
www.xlsoft.com/jp/products/roguewave/sourcepro/index.html

478 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 22:18:51 ]
boost::CppOnRailsができるのを待つか

479 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 00:42:34 ]
>>474
なんか「柴犬」とか言うtomcatもどきをC++で実装してテストしてるスレがあった希ガス


480 名前:デフォルトの名無しさん [2006/12/19(火) 07:44:46 ]
sscanfみたいなのを
正規表現で指定できる関数はあるのでしょうか?



481 名前:450 mailto:sage [2006/12/19(火) 08:04:30 ]
SP1いれたら、テンプレートテンプレートパラメータのデフォルト引数が使えるようになっていた。



482 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 14:13:59 ]
boost MLに何度か投稿していたら
software関係conferenceの Invitation to submit a paper
(おそらくSPAMの一種だと思う)がくるようになった。

同種のメールは、自分の専門分野の関連領域でもくるのだが
( inviteされるような仕事してねえのに invite ってなんだよ)

software関連のは本当に怪しいのかを見分ける手段がない
なにか見分ける方法ないものか

483 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 19:52:06 ]
すみません、質問させてください
基本型あるいはユーザ定義型の配列の要素数を返す関数を作ろうとしてるんですが
arrayがユーザ定義型の配列であった場合でも
/* @ */の処理がコンパイルされるためエラーになってしまいます

template <typename T> void count(T array[]){
if(boost::is_pod<T>::value){/* @ */}
else{/* A */}}

WEBで調べているとboost::enable_ifで解決できそうな予感がしたのですが
自分には次の例がよく理解できません(特に::type*=0の部分)
これはどういった理屈で動いているんでしょうか

template<typename T> void copy_n( const T* from, int n, T* to,
typename enable_if< is_pod<T> >::type* =0 ){/* 省略 */}

484 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 20:09:40 ]
>>483
enable_ifやdisable_ifは、関数のオーバーロード解決のルールをトリッキーに使っている。

やりたいことを実現する方法はいくつかある。
たとえばこんな方法。

//false以外、すなわちtrueの場合に呼ばれる
template < bool isPod >
struct Count_impl
{ static void do() {/* 1 */} } ;

//特殊化、falseの時に呼ばれる
template < >
struct Count_impl<false>
{ static void do() {/* 2 */} } ;

template < typename T >
void count(T array[])
{
 Count_impl<boost::is_pod<T>::value>::do() ;
}

485 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 20:11:15 ]
>>483
enable_if<is_pod<T> >
には、TがPODならtypeメンバがあり、そうでなければtypeメンバがない。
したがって、TがPODでないとき、typename enable_if<is_pod<T> >::typeは
不正な型であり、SFINAE規則によってこの定義が多重定義の考慮から外される。
結果として、TがPODであるときのみ考慮される定義ができたわけだ。
typename enable_if<is_pod<T> >::typeは、このコンパイル時選択の機構のためだけに
使われているので、インタフェースに影響を与えないようにデフォルト値付きの引数になっている。
ポインタを取っているのは簡潔に0で初期化できるようにだろう。

486 名前:483 mailto:sage [2006/12/19(火) 21:31:23 ]
>>484,485
レス感謝です
おかげさまで理解できました

>>484
こういう風にすればenable_ifなしでいけるんですね
なんとかそのプログラム理解はできても
自分で書けるようになるまでが大変だ・・
とりあえずこれを参考に頑張ってみます

>>485
enable_if< is_pod<T> >::type* =0
ええと、この式の場合だと
組み込み型の場合はtypeメンバが存在するわけですよね
そして組み込み型でない場合はtypeがないから定義自体されない
それだと* =0はなくても大丈夫なんじゃ?と思ったけど
この引数はコンパイル時にifの役割を果たせばよいから省略可能にしたい
省略可能にするには=とデフォルト引数が必要で
typeをtype*にすればどんな場合でも0が代入できる
うーむ、よく考えられてますね

487 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 22:46:08 ]
個人的には返り値型に使うほうが好き>enable_if

488 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 01:12:34 ]
>>482
自分で「おそらくSPAMの一種だと思う」なら、ちゃんと見分けられてるじゃないか。

489 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 03:58:16 ]
>>487
コンストラクタだとデフォルト引数として仕掛けるしかないけれどね

逆に引数の数が固定されていて余計なデフォルト引数が仕掛けられない
演算子関数定義だと戻り値型一択になるね

490 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 20:21:16 ]
そもそも483が作ろうとしていると言う配列の要素数を返す関数は、
基本型かユーザ定義型かで分けて一体何をするのか気になる。

配列の要素数と言えばそもそもboost::size()で済むような話ではないのか?

491 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 20:32:25 ]
>>490
番兵を思いついた。
podな型に対しては、ある値を決めておき、
俺様クラスについては、専用のフラグでも用意しているとか。



492 名前:デフォルトの名無しさん mailto:sage [2006/12/21(木) 16:05:56 ]
boost開発者向けMLに、自分用に作った
プログラム(boostの既存libの部品の追加してるだけだけど)、
死蔵するのもったいないから
ときどき投稿してたんだけど、
最近、無視されてるっぽい。

493 名前:デフォルトの名無しさん mailto:sage [2006/12/21(木) 17:41:27 ]
boost使いはVS2005にSP1はあてるのかい?

494 名前:デフォルトの名無しさん mailto:sage [2006/12/21(木) 17:56:40 ]
当たり前だ

495 名前:デフォルトの名無しさん mailto:sage [2006/12/21(木) 21:36:36 ]
>>492
何か不満か? ML に晒したんなら勝手に使ってる奴もいるだろう。
使った人が必ずレスポンスを返すわけでもなし。
死蔵にはならずに済んだんだからいいだろ。

496 名前:デフォルトの名無しさん mailto:sage [2006/12/21(木) 22:52:25 ]
boost.cppll.jp 落ちてる?

497 名前:デフォルトの名無しさん mailto:sage [2006/12/21(木) 23:29:55 ]
ぽいね。俺も繋げない

498 名前:デフォルトの名無しさん mailto:sage [2006/12/22(金) 11:42:53 ]
ublasのatlasへのインターフェイスをbackendと表現してるのだが
backendってそういう意味なんだっけ?

499 名前:デフォルトの名無しさん mailto:sage [2006/12/22(金) 12:01:23 ]
まあCORBAとDCOMではproxy/stubが逆転していることですし

500 名前:デフォルトの名無しさん mailto:sage [2006/12/22(金) 15:15:00 ]
>>499
それは主体をどっちに置くかという話から帰着した結果だからあんまり関係ない気が。


501 名前:デフォルトの名無しさん mailto:sage [2006/12/22(金) 23:08:58 ]
atlasは下請けや補完をやるわけだから、
ublasから見ればたくさんあるbackendの一つってことでしょ。



502 名前:デフォルトの名無しさん [2006/12/24(日) 12:39:36 ]
boostの日本語ドキュメントプロジェクトって2003年で更新止まってるよね
サーバーも落ちてるみたいだけど、誰もメンテナンスしてないの?

503 名前:デフォルトの名無しさん mailto:sage [2006/12/24(日) 17:51:43 ]
ublas今試してるんだけど、
VC++2005でboost1.33_1だとsparse_matrixとsparse_vectorは定義されていないと怒られてしまう。
matrix_sparse.hppとvector_sparse.hppはきちんとインクルードしているんだけど、なぜに?


504 名前:デフォルトの名無しさん mailto:sage [2006/12/24(日) 18:41:52 ]
しかも、mat[i][j]とかで行列の要素にアクセスするとか、lu_factorizeもコンパイルエラー。なんでやろ・・・。

505 名前:デフォルトの名無しさん mailto:sage [2006/12/24(日) 18:49:16 ]
エラーメッセージも張らずに日記かよ。いい加減にしろ

506 名前:デフォルトの名無しさん mailto:sage [2006/12/25(月) 13:27:53 ]
>>504
mat[i][j]の書き方はできなくなった
今は
mat(i,j)


507 名前:デフォルトの名無しさん mailto:sage [2006/12/25(月) 13:47:21 ]
Boost.Python でPythonから呼ぶようにした関数って
Cとして呼ぶよりも処理が遅くなったりするの?


508 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 16:16:15 ]
すみませんが、質問です。
Debian Sarge(EUC-JP)上でBoostのsplitなどをを使いたいのですが、ソースコー
ドの文字列をEUC-JPにするとエラーになってしまいます。

#include <boost/algorithm/string.hpp> を含むソースで
g++-3.4 -finput-charset=EUC-JP -fexec-charset=EUC-JP test05.cpp -o test05
を実行すると、
/usr/include/boost/function/function_base.hpp:23:25: failure to convert EUC-JP to UTF-8
このようなエラーに。
なお、ソースではwchar_t, wstringを使っています。

ソースをUTF-8に、オプションを-finput-charset=UTF-8 にすると動くように
なりますが、やはりこれは不便です。

ソースをEUC-JPのままで使う方法はないでしょうか?


509 名前:デフォルトの名無しさん [2006/12/26(火) 18:55:42 ]
age

510 名前:508 mailto:sage [2006/12/26(火) 19:42:26 ]
追記です。
コンパイル時のエラーは、こんな単純なソースでも起こってしまいます。
エラー再現には、ソースにワイド文字リテラルが含まれる必要はありません。
------------------
#include <boost/algorithm/string.hpp>

int main(void)
{
return 0;
}
------------------
g++-3.4 -finput-charset=EUC-JP -fexec-charset=EUC-JP test06.cpp -o test06

/usr/include/boost/function/function_base.hpp:23:25: failure to convert EUC-JP \to UTF-8

EUC-JPではマルチバイト文字を使えということなのかもしれませんが、せっかく
対応しているのだからワイド文字を使いたいのです。


511 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 19:56:55 ]
>>510
boost/ref.hppがLatin-1で書かれているのが問題っぽいな。
ASCIIに直すようにお願いする位しか解決策が思いつかないが。



512 名前:508 mailto:sage [2006/12/26(火) 20:20:55 ]
>>511
ありがとうございます。
ref.hppの17行目でしょうか?そこを削除しても、やはり同じエラーが出ます。

他に気づいたことは、-finput-charset=utf8 などと書いても、「UTF-8に変換
できない」というエラーになることです。大文字ハイフン入りの「UTF-8」以外
受け付けません。

もしかしたらGCC自体が、テンプレートライブラリがUTF-8以外であることに対応
していないのでしょうか?


513 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 20:38:10 ]
>>508
この辺を参考に
search.gmane.org/?query=windows+unicode+gcc&group=gmane.comp.gcc.devel
permalink.gmane.org/gmane.comp.gcc.devel/78542

>>512
インクルードファイルの中に他にも含まれていないか
チェック。utility/enable_if.hpp とか

$ iconv -l

で使用できる文字コードは分かる






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

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

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