なんとなく一定真面目に ML を読み始めたので。 まあ、まとめとくか、と。
三日程度放置すると軽く二三百のメールが。
本題の前にちょっと。 基本的に boost の開発は、 提案 => 試作(提案と同時であることも多い) => Formal Review (=> 次期 C++?) と進みます。 面白そうなライブラリが次の段階に進んだら大抵書きます。
いいかげんもうちょっと美しくまとめようと思います。
では本題。
次期バージョンの準備が着々と。
ずいぶんと時間がたってますが Formal Review。 便利な union みたいな感じかな。
long long はデフォルトでは使わないでくれ、って話。 ちょっと前にTOGEさんと議論してたり…
std::vector を手軽に出力したい、って話。 確かに java の toString() は魅力的。 でも実装がいろいろ面倒だと思うのです…
Named Template Parameter をもう少しやりやすく。
Philippe さんの Request だけど…がんばりますなあ。 Formal Review はじめるのかなあ?
素晴しいっす!! cppllをまきこむ。 担当登録ページ。 私は… 何故か翻訳していた(本当は type_traits とかもやりたかった) static_assert の途中までが手元にあるけど取られちゃってるな。 まあちょっと待って空いてるのを適当にやろうかと。
database template library は? いくつかあるよ。
私は boost にこういうの欲しいと前から思ってました。 自分で作っちゃってるけど。
次期スレッド話。
static const int と enum はどっちがいいの、という話。 あまり関係無いけど、 これは凄い。 肝心の結論はスレッドが長すぎてわからなかったという。
早く修正して欲しいところですね。
Optional library が boost に参入しました。 このレビューの結果です。
コンパイルタイム print を warning/error 以外で行いたいなあ、と。
shared_ptr でガベコレ? 中身見れてません。
ヘッダの依存チェックや、コードが規約に従っているかどうかを チェックする utility を作ろうという話です。
さっきの STL 拡張話の関連。 hash を boost に入れようじゃないかと。ありがたい。
SGI 拡張なんかを boost でカバーしようという話。 個人的には前からやって欲しいなあと思ってました。 SGI-select を select.h とかにして配布してたんで。
うぬぬ、残念でござるよ。 要は時期尚早ってことらしい。 もうちょっと議論を煮つめようか、とのこと。 で、 boost-serialize ML ができました。
Request に対して、Formal review が始まりました。
前の container_adaptors が sandbox 入り。
boostに適合するライセンスかどうかについての、 ライセンスレビューを wiki で集めるとのこと。
partial specialization 無しでポインタとスマートポインタから 生のポインタから効率良く取りだす汎用関数が欲しいとのこと。 無理難題。
頑張って作って下さい。
任意の型に未定義の状態を導入する。 Java の null, perl の undef。
スマートポインタのコンストラクタとデストラクタにフックを つけることが可能になるらしい。
元の投稿は置いといて、面白いのは、 こっちの virtual contructor。
恥ずかしながら知らんかった… ちゃんとマニュアルに書いてあるのに…
どひゃー。 angle bracket をうまく処理してくれる c++-mode があればいらんけど。 今まであんまり考えなかったけど、あるのかなあ。そういう elisp。 コンストラクタの初期化リストとかもうまくいかない時があるんだけど…
こういうお気楽なのは個人的には大歓迎。 ミニマリスト的にはあれかも知れんが。
おお。ちゃんと進行していたのか。
Serialization の Formal Review です。 まだ詳しく見てないですが、インターフェイス的には、 基本的にメンバを全部 oarchive なるストリームを使って 入出力すれば良いようです。 Java か。
boost に新しい仲間が増えました。 が、タイトルの typo が笑いを誘う。
メモリ上に Relational Database を構成するそうな。
デカルト積と状態マシンライブラリへの proposal。 こういうのデカルト積っていうのね。知らんかった。 finite state machine は長らく放置されてますが…
typeof 欲しいなあ、ってさ。 新 C++ 繋がりでいくつか。 組織, template typedef, hash, new libraries Herb Sutter さん、グッジョブ。
ドキュメントを XML で書いて XSLT で変換せんか?という話。 DocBookの方が良いとか Doxygen だとか。 ここで述べられているように、 ドキュメントがめんどくさくていい加減になったり、 びびって Boost に投稿しなくなる人が増える恐れはあるだろうなあ。 本当にこんなんやるんかい。 それがいい。 知ってる人は DocBook。知らん人は無理せんでええよ、と。 Synopsisはどうするかのう。
Design by Contract。事前表明、事後表明って奴です。 assert の超強力バージョンっていうか。 ライブラリの開発とか集団開発には良い言語機能では無いかと。 でもライブラリではクラスの不変表明はできないよなあ。 良い説明です。 結局これも言語単位でのサポートが欲しいと思うっす。
ライブラリワークグループのミーティング。 みんなあれはどうなったこれはで大変。 function と tuple は標準確定らしい。マンセー。 この勢いで boost 色に染めぬいて頂きたいもの。
…でも function は複雑な気持ちも。 正直、function やら bind やら lambda やらは 言語自身がサポートして欲しいのですよ。 C++複雑化上等。
tuple は… このままで投入ってことは無いよなあ。 MPL も標準に入れないと大変なことになりますよ?
こういう小ネタメモっとくと後で便利。
bimap。 双方向参照可能な map です。 データ構造的には set二つで管理、とまあ普通の解だと思います。
構造はどうなってるのかな、 と Implementation を眺めた時に発見。
class A { ... }; class A A; // legal C++! object A is of type A
知らなんだ。 なんか変なインターフェイスだなあと思ったら、 面白いことやってるのね。
mojo I、 zuto との絡みなんだろうけど、 文脈を把握しきっていない。 とにかく一時オブジェクト排除の話題。 コンパイラに任せとけ、と思わなくもないが…
iterator_adaptorのコンテナからのアプローチって感じで良いのかな。 この中で紹介されてたのが VTL
読んだり試したりする暇が無いのが残念。 積分のことだろう。 賛成意見を読んで。
> Boost needs some algorithms like this to increase scientific use.
とのことだが、 boost の人たちって、やっぱり アカデミックな人が多いのかなあ。 今度調べてみよう。 というのは、個人的には、やっぱ SMTPとか、 そういう卑俗なものも欲すいなあ、とか思ったり、 でもやっぱりそういうのを boost がやるのもおかしいかなあ、 と思ったり、やっぱり c++ 版 CPAN かなあ。
こんかいはパッチリリースが出る模様。 大変ですな。
RedHat系Linuxerにはありがたい。
おお、いいね。 F [kg m/s^2] = m[kg] a[m/s^2] とかそういう単位付き演算を行なうライブラリ。 しかしみなさんコンパイルタイム演算が板に付いてますな。
使ってみましたが、現段階ではたくさんエラーが出てしまったので諦めました…
わーい。 真剣に MPL の存在はアナウンスされない模様。 追加じゃない変更点では、functionの新形式は結構重要かな。 私が uBLAS 以外の解説を雑に書いているので、 参照していただけたら幸い。
EBNF 記法に従うパーサ。 treeと合わせてXMLパーサだとか、まあそういうものらしい。
Loki の人です。 一時オブジェクトをライブラリ側でなくすという脅威の話題。
1. It does not require language changes.
ということで、また彼の魔法が見れるかもしれません。 まあ一年前の魔法は今の常識なんですがね。
あ、これ昔見たことがあるな。 treeの標準機構としては文句の無い、 わかりやすいインターフェイスだと思います。 こういうよく練られたライブラリが boost の統合されるのは良いことかと。 深さ優先と幅優先のイテレータがあるわけです。 でもみんな欲しがってたものだけになかなか議論が白熱。 ポリシーベースでもうちょい詰める必要があるかと。
便利は便利なんだろうけどどうしても欲しいってことは無いかも。 テストとかやりやすくなりますな。
これは…凄い。
lightweight パターンな string って奴、だと思います。 同じ文字列ばかりコピーする時は鬼のような速さを誇るっていうやつ。
これ自体はたいしたものに見えないんですが、 この後紹介されている、 cycle_iteartor が便利そうに思いました。 というか一度作ろうとしてやめた記憶が。
なかなか便利な感じ。凄い地味ではあるが。
地味ながらも良い仕事。円周率とか自然対数などの数学定数。
本当に凄い。Loki port な技術が使われとるんかな。 とうの昔に VC とはおさらばしちゃったのでよく知らんのですが。
返答 が preprocessor の一例として良いかと。 うぬぬ、凄い。
これは読むしか。
過去ログ消えとりますか?まあとにかく、
>> Where is 'is_polymorphic'? I can't find it in type_traits. > It's not there. See boost/python/object/inheritance.hpp.
なんでんなとこに。
二つとも面白そう。 ソケットとIOのフォーマッタ(という表現が適切なのかどうか)。
高速フーリエ変換のことだと思う。 なんか最近数学関係がホットなのですか? Geometric Algebra Library Idea
CVS 見る限り、1.29 で増えるコンポーネントは、 date_time dynamic_bitset format MPL multi_array signals uBLAS で良いのかな? しかし遅れすぎ。
ディレクトリ探査って、標準 C/C++ にないからすごくありがたい。 かなりおすすめ。 今のところ POSIX + Win32 をサポートってころみたいです。 まあ、でも例えば Borland C++ には POSIX 準拠の dirent.h とかあるのでいらんと言えばいらんかも。
とりあえず、 サンプルを書いてみた。 まだアンドキュメントでかつサンプルも用意されていない recursive_directory_iterator を使ってみたんだけど まあ、directory_iterator と似たようなものっぽい。 コマンドライン引数で指定されたディレクトリを ls -AR し、 それぞれに対してディレクトリかそうでないかを判定してます。
こっちは BigNum。
テンプレート特別バージョンが無いVCでは動かんよ。 大抵のコンパイラはこれを最適化してくれるんじゃないの? ポリシーベースで選択できるのが良かろう。
shared_ptrを意識せずに 参照カウントされた要素を持つコンテナを扱うってことかな。 使用例もあるけど今一つな例だと思うんですけど。
前にも出てきた state machine ですが、 結構面白くなってきたみたいですね。 ちょっとサンプル書いてみるかと思ったんですが、 sandbox に十分に良いサンプルがあるのでご紹介。 FSM.cpp
数学的な区間を表すクラス。 [1-5] とかいう区間に対して、 さまざまな特徴を問い合わせたり、 写像を作ったりできる。
typedef boost::interval<double> I; I range(-4.0, -1.0); assert(in(-2.0, range)); assert(!in_zero(range)); I range2 = range + 2.0; assert(in_zero(range2)); assert(overlap(range, range2)); I range3 = sin(range2); assert(!in(range3, 1.1));
てなもんだ。数値計算なんかに便利なんだろう。
もうすぐ Serialization が手に入るのですよ。
おお、boost が固定小数点数に着手っすか。 参考。割と需要があるみたいですなあ。
本当にめでたい。先越されたけど。
cvs update かますとこんなものが追加されてたみたいです。
namespace detail { // is_pointerlike_helper enables Signals library to recognize shared_ptr template<typename T> type_traits::yes_type is_pointerlike_helper(const shared_ptr<T>&, int); } // end namespace detail
何に使うの?なんて聞かれても答えられないのが修行不足。 MPL関係かと思ったんだけど、これ、実行時関数なんだよなあ。
後述、わかった。 type_traits で、is_pointer_helper 使って is_pointer を実装してた。 そういうことするのね。 type_traits/composite_traits.hpp 参照。
int a; int b = int(); int c = 0;
とすると、b = c = 0 であることを利用したもの。
確かにいらんなあ。使った記憶が全くない。 まあ、ポインタとインターフェイスを揃える意味で、か? でもなあ…
IntVec vec; IntVec::iterator ite = vec.begin(); int a = vec[0]; int b = ite[0]; int c = *ite;
こんなのあったのか。知らなんだ。 組み込みintとかから継承できてるし。 変更案は提案されてる通りで良いと思うのだけど、返事が無い。
大方賛成できる内容ではないかと。
欲しい欲しい。早速作りたまえ。 …なんか協力できることがあればなあ、と思いますね。 こういうの見てると。
8月22日だそうで。
なんか面白い感じ。#pragma once に萎えるけど。 完成品に期待。
Thread & Exception も結着か、と思いきやまだまだ続くのか。 まあ、この投稿は割とまとめになるのかも。 このスレッド無視してるのでわからんが。
が宣伝に来た、が、放置されてますな。 重要なソフトだと思うし、インストールしてるけど使っていない。 だって、とっくの昔にエラーメッセージなんて素で読めるようになったし。
この返事、よく意味がわからんのです。 んー bind と lambda との相性が悪いの?
やっと何が凄いかわかった。つうか凄え。 perl で func(-param1 => 'foo' -param => 'bar'); とかやる、 名前付きパラメータがテンプレートパラメータでできるのですよ。 この例 が解り良かったです。
良いと思う。以下メールのサンプルコードのコピペ。
This way doing: std::copy (make_bounded_iterator(str.begin(), str.end(), 5), make_bounded_iterator(str.end()), std::back_inserter(copy_of_str)); would be equivalent to strncpy (new, str, 5);
興味のある方はどうぞ。 ICU の話も出てますね。
恐ろしい話題。考えたくないので、 頑張ってかっこいいインターフェイスで私の視界から隠してください。
できればとても便利なことこの上無いですねえ。 これも標準委員会にガツンと言ってやって欲しい内容。 スクリプト言語の強みということでも正規表現と共通。 どうせスクリプト言語ほど綺麗には書けないんだろうけど、 汎用性では負けんだろうな。zipの話とか出てるし。
すげえ。ついに boost の黄金時代が来るの、かな。 ていうか今ごろ、って感じも少しある。 やっぱり 5年で標準変更ってのは今の動き的に遅すぎますなあ。
でもきっと stdコンテナを typedef する以外に使わない、 ってオチなような気もする。
c++ の生 enum ってなにげに使いにくいからありがたい。
true, false, indeterminate の三つの状態を持つ bool を作ろうという話。 この後 2ビット目のスペースがもったいないから 四つの状態を持つべきだ、 という意見が出て、いやテンプレートでいくらでも state数を指定できるように… と話が進みますが、んなもんいらんです。 まあ、3つ位ならあったら便利かも知れないけど…
今のところ必要無いので品定めはしてません。 cppllでの類似話題。 cppllもこういうのばっかりだったらいいのになあ。うーん。
MPLスレッドの根っこはここだと思われる。 MPL、勉強したい。 http://www.mywikinet.com/mpl/ の Mini-tutorial を読んで 概略 を書いてみました。 template Meta programming 入門にはなるかも。 他もゆっくりと読まなくては。
欲しすぎ。
mutable_ptr。 これが多分完成品。std::* コンテナに入る std::auto_ptr。 この関連で、 squad_ptr。 boost::shared_ptr より速いとのこと。 squad_ptr は速いぞ。 それへの批判。 結局 squad_ptr は使いものにはならんのかな。 ポインタにはうるさい Philippe氏。 まだまだがんばる。 さらにがんばる。
やたら話題になってますね。一度使ってみたい。
欲しい、か。 非 std::string をたくさん渡すときに 片っ端から boost::lexical_cast するのは 面倒だし。 つうか std::string の << を実装したら良いのでは。
とてもとても欲しい。
gcc マクロ一覧。
boost::any の友達? 解説が無くてよくわからん。
localeはよく知らんが、確かにヘッダ自体は gcc-3.0 からある。 問題はちゃんと動いているように見えないことなのだが。
全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。