便利なデバッガとか、周辺ツールのサポートとか、そういうのが揃ってはじめて、「使える」ようになると思うんですが……
訳者注 下記の文章は C++0x - the next ISO C++ standard の暫定勝手和訳です。 翻訳は現在進行中であり、未完成かつ不正確である可能性があります。 っていうか未完成かつ不正確です。 正しい情報を必要とされる方は、原文を当たってくださいますようよろしくお願いします。 誤訳の指摘は大歓迎です。 2010年01月06日更新 (訳注: 和訳は2010年01月21日更新) この文書 (訳注: 原文) は Bjarne Stroustrup が記述、更新している。 建設的なコメント、訂正、参考資料、提案はもちろん大いに歓迎する。 現在、著者は参考資料の充実化と清書に取り組んでいる。 C++0x は次期 ISO C++ 標準である。 現時点の 草案 を、コメント募集のため公開している。 以前の (そして現在の) 標準は、しばしば C++98 や C++03 と呼ばれる; C
BOOST_COMPILER で取得できるみたいです。 [ソース] #include <iostream> #include <boost/config.hpp> int main(){ std::cout << BOOST_COMPILER << std::endl; return 0; } [出力] Microsoft Visual C++ version 10.0 [boost] ver 1.50.0 [参照] http://www.boost.org/doc/libs/1_50_0/libs/config/doc/html/boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.boost_informational_macros
旧Boost日本語リファレンス( http://boost.cppll.jp/HEAD/ )がcppllで運営されていましたが、最近はもうだれもメンテしてなかったので、私の方で引き取りました。 とりあえず、文字化けを解消してGitHubページに置いておきました。 サイト: http://boostjp.github.com/ リポジトリ: https://github.com/boostjp/boostjp.github.com まだ運営方針も決まってないので、とりあえず置いてあるだけです。 cpprefjpの方がなかなか目処が立たないので、しばらくこのままです。 ドキュメントは古いままなので、最新のつもりで参照はしないでください。
Constant Initialization source: http://akrzemi1.wordpress.com/2012/05/27/constant-initialization/ ひとつ前の、コンパイル時計算についての記事では、いかにこのconstexprという新しいキーワードを使い倒して、面白い効果を引きだすかについて述べた。 さて今回は、このキーワードの用途についてもうすこし見ていこう。もうすこしコンパイル時定数の話も書けると思うが、例えばこの提案を読んでいる読者には既知のことだと思うので。 この記事はconstant initializationについてである。端的に言うと、これは初期化順やデータレースに起因する問題を避けて、global、static、またはスレッドロゥカルなオブジェクト(定数でなくともよい)を初期化するための新しい方法である。 この記事では、’gl
どこかにまとまっていれば便利かなーと思いとりあえず、手元にあったのを簡単にまとめてみた。 [注意点] ネットで C++11 に関して調べる時の注意点ですが、古い言語仕様(C++0x)のまま書かれているコードが載っている事があります。 ブログの記事などを参考にする場合は投稿日を見て、最近の記事かどうかを確認しておくといいと思います。 [コーディングスタンダード] C++11 のコーディングスタンダード C++11 - the recently approved new ISO C++ standard 駆け足でC++11の概要 C++11 とオブジェクト指向 C++03 の仕様から変更のあったライブラリ [その他] C++0x総復習 Web 上での C++11 関連記事まとめ C++11 Advent Calendar 2011 C++Now! 2012
とりあえず以下ダラダラのアウトプットはこちら gist に置いといた https://gist.github.com/1437782 作りたいもの 僕は神になる。ヒト(クラス)を作ってみるぞ 人とは、名前と年齢を持っている存在である 人とは、名前と年齢を伝える為、ちゃんとご挨拶ができる存在である 作り方とか C++ で、ヒトクラスを作成する デフォルトコンストラクタ使わない、常に引数 (名前, 年齢) を受けるようにする C++ 製ヒトクラスを元に Ruby 拡張ライブラリを書く C++ 製ヒトクラスの機能をマッピングする C++ でヒトクラスを作る human.hxx /* * human.hxx */ #ifndef _INCLUDE_HUMAN_H_ #define _INCLUDE_HUMAN_H_ #include <string> #include <sstream> clas
Data_Wrap_Structは何をしているのか Ruby拡張ライブラリプログラミングガイドを読むと、 Data_Wrap_StructはRData型のRubyオブジェクトを作るらしい。VALUE型は単なるそのポインター。 1つのRDataを複数のVALUE型で参照する。どこからもマークされないとこのRData型オブジェクトはGCによって解放される。 つまりC++のオブジェクト(例えばObject3D)とRubyのオブジェクト(RData)は1対1で対応していなければならない。 そうするとRubyのGCによって解放されたタイミングで正しくObject3Dのデストラクタが呼ばれる。 この1:1の対応をどうやって実装するか? 30のM3Gのクラス全てにvoid*を持たせてRDataを指すのが一番簡単だ。 RData型もしくはVALUE型にしないのはruby.hをincludeしたくないから。
C++11の時間関係のライブラリは、非常に美しい設計をしている。 まず、経過時間そのものを表すdurationがある。Cライブラリでいえば、time_tの値の単位を指定するクラスだ。Cライブラリでは、time_tの値は秒であったが、C++では、単位を指定できるのだ。 durationでは、単位ライブラリであるratioを使って、秒、ミリ秒、マイクロ秒などといった時間単位を表現している。 秒 std::chorno::seconds ミリ秒 std::chrono::milliseconds ナノ秒 std::chrono::nanoseconds 時 std::chrono::hours それ以外の、独自の刻みがほしいとしても、簡単に作成できる。 4分33秒 using four_minutes_thirty_three_seconds = std::chrono::duration< l
The document discusses replacing OutputIterators in the C++ standard library with unary functions. It provides examples of how algorithms like copy, set_union, and set_intersection could be updated to take unary functions instead of OutputIterators. It also describes the OvenToBoost project, which aims to port range adaptors from the Oven library to Boost.Range to address limitations in Boost.Rang
今は金曜日の午後、C++Now2012の全てのセッションが終わり、ホテルに戻ってこれを書いている。 今回は、BoostConの頃から数えて、3回目の参加となる。 これまでとの一番の違いは、アキラさん id:faith_and_brave と一緒の参加となったことだろう。これまでも会う度に、鬱陶しいと思われることを気にせず、参加しろ〜参加しろ〜と洗脳説得を試みてきた。ようやく、参加すべき人が参加したという感じがする。 C++Nowへの参加もあるが、諸々の事情から、私の現在のプライオリティは英語力の向上にある。そして、アキラさんは英語でのメールのやりとりなど積極的に行っているものの、会話は得意ではないとのことであったので、私はその部分を補う役割を果たそうと考えていた。 結果は、思いの外うまくいった。まず、毎日朝一で行われる、Library in a weekでアキラさんがみんなの前で発表すると
たとえば libevent のような C 言語でかかれたイベント駆動型のライブラリを C++ から使っていると、C++ のメンバ関数をコールバックとしてセットできたらうれしいことが多いですよね。以下のようにすればできます。 たとえば、コールバック関数をセットする関数の型が、 void set_foo_callback(void (*)(void* cb_arg), void* cb_arg); なら、以下のようにクラスとメンバ関数を引数にとるテンプレート関数を定義し、 template <typename T, void (T::*FUNC)()> void to_foo_callback(void* cb_arg) { T* obj = reinterpret_cast<T*>(cb_arg); (obj->*FUNC)(); }以下のように受け渡せばいい。 class K { publ
それは、shared_ptr のようなラッパーよりも、オブジェクト自体が参照カウンタをもっているほうがコードが書きやすいから。 たとえば、継承したクラスでオブジェクトの参照カウントをいじることは、shared_ptr では難しい。 shared_ptr を使った場合: class Base { public: virtual void foo() = 0; }; class Derived : public Base { public: virtual void foo() { // ここで自分自身への参照カウンタをインクリメントしたいけどできない… gManager_.register(this); }; // 呼び出し側 obj = shared_ptr<Base>(new Derived()); obj->foo();オブジェクト自体が参照カウンタをもっていれば、このような問題は発生
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く