Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode
Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode
Boostの正規表現ライブラリで使われている正規表現の文法は、Perl 5を参考としている。一方、C++0xに入る、正規表現の標準ライブラリは、ECMAScript準拠(プラスちいさな拡張機能)である。 オプションで、POSIXのbasic、またはexntended、それに加えて、grepの拡張機能に準拠した文法を使うこともできるが、POSIX規格は、常にLeftmost Longest ruleであり、Non greedy repeatsができないので、grepのようなツールならともかく、プログラミング言語の中で使う正規表現としては、貧弱である。 しかし、TR1は、Boostを参考に作られたはずである。なぜ、違うのか。 Perlの正規表現は、Javascriptプログラマから見ると、少々羨ましい機能がある。特に、independent sub-expressions, zero widt
かなり面白かったので書いてみます。 代入する型が一致する場合 まずは小手調べ。簡単に代入できる場合までの処理。 Boost 1.40.0 では以下の実装になっています。 void variant_assign(const variant& rhs) { if (which_ == rhs.which_) { detail::variant::assign_storage visitor(rhs.storage_.address()); this->internal_apply_visitor(visitor); } else { assigner visitor(*this, rhs.which()); rhs.internal_apply_visitor(visitor); } } template <typename T> void assign(const T& rhs) { det
C++03 と C++11 ってどれぐらい互換性があるのかなーと気になっていたんだけど、仕様書の §C.2 を見てみたらずばりなものが載っていたので、一通り読んでみた。 C++03 のコードを C++11 として動かそうとしたときにコンパイルエラーやランタイムエラーが発生したら、これを確認してみるといいかも。 新しい文字列リテラル R, u8, u8R, u, uR, U, UR, LR という新しい文字列リテラルが追加されたため、文字列と一緒にこれらのマクロを使った場合、互換性の無いコードになる可能性がある。 例えば以下のコードは互換性の無いコードである。 #define u8 "abc" const char* s = u8"def"; // C++03 なら "abcdef"、C++11 なら "def" になる ユーザはこの手の短いマクロをよく使うため、この問題はよく発生しそうに見
std::endl って、どのヘッダで定義されているか知っていますか? と思った人はハズレです。実は std::endl は で定義されてます。 これって を include するだけだと標準に準拠した動作にならないんじゃね?とか思ったのですけど、どうやら は も include することが決まっているようです。 ということで、どのヘッダがどのヘッダを include するのかが気になったので調べてみました。 調べ方は、仕様書の各 synopsis にある #include <...> の部分を見ました。 これが必ず include されることは、 §17.6.5.2¶1 によって決まっているようです。 以下のような結果になりました。 header include , <map> ,,, 意外に全然 include してないですね。 が特殊だったというだけのようです。 ということでちゃんと
Microsoft Visual C++のランタイムのライブラリの話。http://support.microsoft.com/kb/154419/ja より抜粋。 ライブラリの種類と関連するコンパイラ スイッチ 基本 C ランタイムライブラリ シングルスレッド (ML)LIBC.libマルチスレッド (MT)LIBCMT.libマルチスレッド DLL 版 (MD)MSVCRT.lib (MSVCIRTD.dll のインポート ライブラリ)Debug シングルスレッド (MLd)LIBCD.libDebug マルチスレッド (MTd)LIBCMTD.libDebug マルチスレッド DLL (MDd)MSVCRTD.lib (MSVCIRTD.dll のインポート ライブラリ)ライブラリの種類と関連するコンパイラ スイッチ 標準 C++ ライブラリ シングルスレッド (ML)LIBCP.l
並走 今週のお題「上半期ふりかえり2025」 2025年の目標。たしかGoogle Keepに書いていたよなと思って検索すると、直球で「2025年の目標」と書かれたメモが出てきた。編集:2024年12月31日。(1)マラソン大会に出ること、(2)短歌を100個つくること、と書いてあった。 マ…
株式会社ロングゲート - プログラミングの魔導書 〜Programmers' Grimoire〜 Vol.2 Vol.1から約1年経ってしまいましたが、本日、 『プログラミングの魔導書 〜Programmers' Grimoire〜』 Vol.2 The Evolution of Languages の予約を開始いたしました。 Vol.2のテーマは「言語の進化」です。 いろいろな言語における日本の第一人者と言って差し支えない日本人プログラマの方々に、歴史や現在の状況、今後の展開について執筆していただきました。 本書では、Boost C++ Librariesの設計者であるDave Abrahamsへのインタビューに成功しました。ライブラリが言語の進化にどう貢献していくのか、プログラマにライブラリをどう教育していくのか、などを伺いました。 本書のコンテンツおよび執筆者は以下のとおりです。 D
ファイルの中身を全部読み込むから。 自分が書くとこういう感じですかね。 #include <iostream> #include <fstream> #include <iterator> #include <iomanip> #include <vector> int main() { std::ifstream ifs("file_read.cpp"); if (!ifs) { std::cerr << "file can not open." << std::endl; return -1; } std::istreambuf_iterator<char> head(ifs), tail; std::vector<char> buffer(head, tail); std::cout << "file size: " << buffer.size() << " byte(s)." <
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
cppllとboostjpに送ったメールですが、こちらにも再掲します: == ついに ねんがんの 国際標準をてにいれたぞ!: C++0x、全会一致で承認される C++0xが満場一致で国際標準として承認されました。 やりました! 日本からも全員が賛成票を出していました。 さて、C++11の仕様が固まってこれから大きな変更はないでしょうから、 そろそろC++11の解説サイトやリファレンスを整備していかなくてはいけません。 cppll, boostjpのコミュニティで集合知としてのリファレンスサイトを作っていきたいと考えています。 私の方でGoogle Sitesのcpprefjpを作成し進めているのですが、人手不足でなかなか進んでいない状況です。 cpprefjp - C++日本語リファレンス この活動に興味を持ち、コアメンバとなってくれる方を募集しています。 C++11が広く使われて欲しいと
[Update: “C++11” is now the confirmed name — Geneva informs me that they plan to have it published in a matter of weeks, and then we’ll have ISO/IEC 14882:2011(E) Programming Languages — C++, Third Edition. The second edition was C++03, a Technical Corrigendum, or bug patch, that contained no new features. This is the first major revision with new features.] The final ISO ballot on C++0x closed on
関数プログラミング最終回、lambda。 正味全く中身を理解していません。手に余りまくりです。 サンプルコードを示します。 lambdaTest.cc ジョークにしか見えませんね。 基本的に使うだけでいっぱいいっぱいだったのですが、 いくつか、使うコツがあったように思います。 基本的に、なんか非常識に見える部分は全て lambda functor というものに化けるみたいです。 _1 もそうだし constant('\n') もそうです。 これが左辺値に来ればこっちのもので、 後は演算子オーバーロードして次々に lambda functor を返せば良い、 と、そう、stream のトリックです。 例外的なのが stream 関係で、<< 演算子に対しては 右辺値となっても大丈夫みたいです。 つまり、std::istream << 以外で一番左に来るものは lambda 特有のものを置くよ
Herb Sutterのブログ記事を翻訳してみました。 誤訳についてはご勘弁を・・・。 - FDIS完成! (Trip Report: March 2011 C++ Standards Meeting) 2011年3月25日 Herb Sutter 速報:今日の午後、ISO C++委員会はC++0x標準への最後の技術的な変更を承認した。プログラム言語C++の新しい国際標準は2011年夏に発行される見込みだ。 3月21日から25日にかけて、2011年春のISO C++会議がスペインのマドリッドで開かれた。既に報告したように、この会議のゴールは、最終委員会ドラフト(FCD)に対するNational Bodyからのコメントへの返答を完了すること、最後の技術的変更を受理すること、そして最終国際投票に向けた国際標準最終ドラフト(FIDS)を承認すること、であった。 私たちはそのゴールに到達した。この
RFC: type erasure VaultにBoost.TypeErasureというライブラリが置いてあるのですが、「設計が悪いから書きなおした」とのこと。 ダウンロードして見てみると、すごく使いやすくなっていました。 ユーザー定義の要件も簡単に作れます。 ゲームのシーン管理はこのように書くことができます: #include <iostream> #include <boost/type_erasure/any.hpp> #include <boost/type_erasure/primitive_concept.hpp> #include <boost/type_erasure/concept_interface.hpp> #include <boost/type_erasure/rebind_any.hpp> #include <boost/mpl/vector.hpp> usin
運動のため、ときどき家まで歩いて帰ってみている。1時間くらいで帰れる。 暇は終了している。今はC++を使っています。 ■ [c++][dev] Boost Test Library Unit Test Framework のサンプル Boost Test Libraryに含まれているUnit Test Frameworkを使ったのでサンプルをメモ。 手元のBoostのバージョンは1.37、最新は1.39のようだ。 サンプルソース test_main.cpp、vector_test1.cpp、vector_test2.cpp の3つのファイルを作った。 テストの構成は色々あるようだが、dynamic library variant方式にした。BOOST_TEST_DYN_LINK を define すればいいみたい。 dynamic library variant方式の場合は BOOST_T
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く