Version 1.65.1 - Boost C++ Libraries Boost 1.65.1リリースノート - boostjp Boost 1.65.0に重大なバグが何件かあったため、パッチバージョンアップしたBoost 1.65.1がリリースされました。1.65.0はスキップして1.65.1を使用してください。 1.65.1のリリースノートには、1.65.0の修正内容も含まれます。
Version 1.65.1 - Boost C++ Libraries Boost 1.65.1リリースノート - boostjp Boost 1.65.0に重大なバグが何件かあったため、パッチバージョンアップしたBoost 1.65.1がリリースされました。1.65.0はスキップして1.65.1を使用してください。 1.65.1のリリースノートには、1.65.0の修正内容も含まれます。
本家リリースノート: https://github.com/boostorg/website/blob/master/feed/history/boost_1_61_0.qbk http://www.boost.org/users/history/version_1_61_0.html リポジトリは以下: https://github.com/boostorg/ リポジトリからのビルド方法は、egtraさんのブログを参照: 「Modularized Boost(GitHubへ移行したリポジトリ)を使用する」 新ライブラリ Compute 並列及びGPU計算のためのライブラリ DLL DLLとDSOを容易に扱うためのライブラリ プラットフォームを横断した次の様な操作を提供する ライブラリをロードする 任意の関数や変数をインポートする マングリングされた関数やシンボルへのエイリアスを作成する
今朝見慣れないメールがいくつか飛んできていて、その中でJoel de Guzman(FusionとかPhoenixとかSpiritとかのAuthor)が、「君をメインメンテナとしてコミット権追加しといたから、ヨロシク」ってなてました。 Boostの開発はgithubに移行してからpull-requestすれば誰でも参加できるものだったので、特にコミット権は不要で(ただしコミット権持った人が反応しないとめっちゃ滞る)、まぁいいかなってFusionとか100個ぐらいpull-requestガシガシ投げてたんですが、最近Phoenixもいじるようになって流石に面倒になってきたんでしょうか... 当のJoelはSpirit.X3の開発に専念したいみたいですし。 コミット権あっても何でもやっていいわけではないので、明らかなtypoとかテスト追加とかは直接やるとして、結局はpull-request出し
ライブラリ API の設計手法を学ぼうシリーズの第2弾です。前回の記事はこちら。以下の教材を利用しています。 C++ APIデザイン さて、API のラッピングパターンについてはざっと読むだけで終了とし、今回は Observer パターンについてさらってみました。 MVC っぽいことをやってみたい。 本書では、オブザーバーパターンの説明に入る前に、 MVC アーキテクチャについての説明がありました。 シンプルなアプリケーションでは、コントローラはユーザ入力に基づいてモデルへの変更に影響を与え、こうした変更をビューに通信して、UIを更新できるようにする。しかし、実際のアプリケーションでは、通常、水面下のモデルへの追加変更を反映するために、ビューも更新する必要がある。(…中略…)とはいえ、先ほど述べたように、モデルコードはビューコードを静的にバインディングして呼び出すことはできない。そこでオブ
Boost.勉強会 #14 東京 – boostjp ヲレが書いたメモ というわけで boostjp 書記担当(?)の @T_MURACHI でございます。ご報告遅れましたが、 3/1 に開催された Boost.勉強会 #14 に行ってきました。過去ログ見る限り #4 以来なので 3年ぶりですか…。なんかもうそろそろコンパイラ的に C++11 使えるのも当たり前になってきて当時に比べてもだいぶいい時代になったなぁとか思ってみたり (M$ 除く)。 内容についてはメモに書いた以上のことを語り尽くせる自信がないので、以下、感想などを思いつきで綴ってみます…。 並列処理に関連する話題を取り上げた話が多かったように思います。トレンドというよりは、プロセッサなどのハードの進化の方向がもう完全にこっちに移行していっているが故の必然、といった感じなんですかね。GPGPU に関して言えば応用カテゴリはまだ
C++標準では、三角関数のためのsin(), cos()関数などは用意されているのに、なぜか円周率を取得するための関数や定数が用意されていません。VC++やGCCはM_PIというマクロを提供していますが、汎用的ではないです。 Boost.Mathには、円周率を取得するためのboost::math::constants::pi()関数が用意されています。Boostが使える環境ならこれを使えばよさそうですね。 #include <iostream> #include <limits> #include <boost/math/constants/constants.hpp> int main () { double pi = boost::math::constants::pi<double>(); std::cout.precision(std::numeric_limits<double>
Boost.Filesystem に path を受け取る fstream が定義されているらしいです。 [ソース] #include <boost/filesystem.hpp> #include <boost/filesystem/fstream.hpp> int main(int argc, char const* argv[]){ namespace fs = boost::filesystem; fs::path exe = argv[0]; fs::ifstream ifs(exe.parent_path()/"main.cpp"); if( ifs.fail() ){ std::cout << "Not found" << std::endl; return 1; } std::string line; while(std::getline(ifs, line)){ std:
次の2つを混ぜます。 std::threadをあとから開始。それとムーブ対応したコンテナについて – Faith and Brave – C++で遊ぼうBoost.Optional と Boost.InPlaceFactory で初期化遅延 – 銀天随筆集Boost.Optionalで初期化を遅らせる技法をBoost.Thread(コンストラクトするとスレッドが動き出す)と組み合わせるとどうなるか、任意のタイミングで実行を開始できるようになるというわけです。 そんなわけで、Akiraさんの「std::threadをあとから開始。それとムーブ対応したコンテナについて」の記事の冒頭のコードをBoost.OptionalとIn place facotryで書き直したものがこちらです。 #include <iostream> #include <boost/optional.hpp> #inclu
Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode
lambdaとdecltypeを組み合わせれば、ユニーク型IDの必要ないc_functionが - 本の虫 さて、c_function と lambda expressions の組み合わせについては上記のサイトを参照してもらえれば分かると思います。 c_function を使用する場合、ユニークな型を使用する必要がありますが、それを lambda expressions を使用しようという話ですね。 確かに lambda expressions は decltype([]{}) のように decltype で使用することは出来ませんが、上記の場合だと引数として渡せば解決出来そうなのでやってみました。 [ソース] template<typename Unique, typename FuncType, typename Func> struct c_function_impl; templ
Iteratee を始めようと思いこちらを読んでいたのですが, Lazy I/O must go! - Iteratee: 列挙ベースのI/O - 純粋関数型雑記帳 気になるフレーズが. streamToFile "hoge" `enumPair` throbber とすることにより、ファイル書き込みに簡単に進捗表示をつけることができるようになります。その他、時間のかかるような処理にプログレスバー表示を取り付けたりするのも簡単です。 http://d.hatena.ne.jp/tanakh/20100824#p1 進捗表示?プログレスバー表示? … … … それは progress_display ではありませんか? ※ progress_display について letsboost::progress_display Boost.Timer V2 - Faith and Brave -
知らないうちに Boost.Context が trunk 入りしていたので,それを使って Python のジェネレータのようなものを作る CRTP クラスを書いてみました. generator.hpp メンバ関数 generate を実装するとジェネレータを作り上げてくれます.ジェネレータは,遅延評価される range として振る舞います. 以下の例はフィボナッチ数列を返すジェネレータを作るものです. #include <iostream> #include <tuple> #include "generator.hpp" struct fib : iorate::generator<fib, int> { int max; explicit fib(int max) : max(max) {} template <class Context> void generate(Context
C++er は C++11 で書くことを強いられているんだ!!(集中線 ってことで C++03 の enable_if を使ったコードを C++11 で書きなおしてみたいと思います。 べ、べつにぼっち Boost.勉強会じゃないんだからねっ! まだ C++11 のコードは手探りで書いているので、もしかしたら今後もっとスマートな書き方が出てくるかも知れません。 そういう意味でも今後が楽しみですね。 [元にする C++03 コード] #include <boost/type_traits/is_integral.hpp> #include <boost/utility/enable_if.hpp> template<typename T> void func(T x, typename boost::enable_if<boost::is_integral<T> >::type* =0){ s
のようなものです。 lambda expression 内で構造体を定義しているので、そのまま引数として渡すことが出来ます。 イメージとしては Boost.Parameter が近いかしら? [ソース] #include <iostream> #include <string> #include <boost/typeof/typeof.hpp> #define _(MEMBERS) []{ struct { MEMBERS; } local; return local;}() template<typename T> struct initializer{ template<typename ...Args> T operator ()(Args... args) const{ return T{ std::forward<Args>(args)... }; } }; template<
目次 ホーム 連絡をする RSS Login Blog 利用状況 投稿数 - 1078 記事 - 2 コメント - 33194 トラックバック - 363 ニュース 著作とお薦めの品々は 著作とお薦めの品々は 東方熱帯林へ。 わんくま 東京勉強会#2 C++/CLI カクテル・レシピ 東京勉強会#3 template vs. generics 大阪勉強会#6 C++むかしばなし 東京勉強会#7 C++むかしばなし 東京勉強会#8 STL/CLRによるGeneric Programming TechEd 2007 @YOKOHAMA C++・C++/CLI・C# 適材適所 東京勉強会#14 Making of BOF 東京勉強会#15 状態遷移 名古屋勉強会#2 WinUnit - お気楽お手軽UnitTest CodeZine Cで実現する「ぷちオブジェクト指向」 CUnitによるテスト駆
parse_info<> を使ったパージング ループは、およそ次のようになるだろう。 IteratorT first, last; rule<> r; while ( first != last ) { // パージング実行 parse_info<IteratorT> info = parse( first, last, r ); // パージングに失敗したらループを終了 if (!info.hit) break; // 次のパージング位置を設定 first = info.stop; } grammar<> 文法を定義するには、grammar<> という基底クラスから派生させたクラスを用いるのが便利である。 grammar<> は、派生させるクラスを引数とするクラステンプレートで、 そのスケルトンは次のようになる。 (The Grammar より引用) struct my_grammar
やっとこさはじめました。 [ソース] #define SPROUT_CONFIG_SUPPORT_TEMPORARY_CONTAINER_ITERATION #include <sprout/weed.hpp> #include <sprout/string.hpp> #include <boost/mpl/print.hpp> #include <boost/mpl/int.hpp> int main(){ namespace weed = sprout::weed; using weed::int_; // 21:53:49 というような構文を解析 constexpr auto parser = int_ >> ':' >> int_ >> ':' >> int_; static constexpr auto time = sprout::to_string(__TIME__); st
目次 ホーム 連絡をする RSS Login Blog 利用状況 投稿数 - 1078 記事 - 2 コメント - 33201 トラックバック - 363 ニュース 著作とお薦めの品々は 著作とお薦めの品々は 東方熱帯林へ。 わんくま 東京勉強会#2 C++/CLI カクテル・レシピ 東京勉強会#3 template vs. generics 大阪勉強会#6 C++むかしばなし 東京勉強会#7 C++むかしばなし 東京勉強会#8 STL/CLRによるGeneric Programming TechEd 2007 @YOKOHAMA C++・C++/CLI・C# 適材適所 東京勉強会#14 Making of BOF 東京勉強会#15 状態遷移 名古屋勉強会#2 WinUnit - お気楽お手軽UnitTest CodeZine Cで実現する「ぷちオブジェクト指向」 CUnitによるテスト駆
文字列リテラルではさらに u8 という接頭子も使えます。 u8"Copyright \u00a9 2011 Harapeko, Inc." // \u00a9 は UTF-8 のオクテット列 [C2 A9] に変換される u"\U0002000bは「丈」の字にクリソツ" // \U0002000b は UTF-16 の該当するサロゲートペアに変換される…ハズ 対応関係の表は、…面倒くさいからもういいか。 あとさらっと流しちゃいましたが、 Unicode 用のエスケープ文字も追加されました。\uNNNN は 16bits の、 \UNNNNNNNN は 32bits の UCS を表現できます。上記の例のように、適切な文字列リテラル内で使用すれば、対応する文字セットの数値列に適宜変換されるはずです。この辺の説明はドラフトの 2.3 にありますが、以下の説明の通り、あくまで UCS の文字値を
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く