constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだGenya Murakami
![中3女子でもわかる constexpr](https://cdn-ak-scissors.b.st-hatena.com/image/square/7deb67e4125ff170360fdc60fc619d629bad0608/height=288;version=1;width=512/https%3A%2F%2Fcdn.slidesharecdn.com%2Fss_thumbnails%2Fconstexpr-111204124759-phpapp01-thumbnail.jpg%3Fwidth%3D640%26height%3D640%26fit%3Dbounds)
この記事はC++ Advent Calendar 2012の15日目にエントリしています。 内容はC++11「ムーブセマンティクス」の入門記事となっています。 もくじ ムーブセマンティクス再考 シンタックス vs. セマンティクス コピー vs. ムーブ ムーブのもつ2つの意味 C++11のムーブセマンティクス対応 auto_ptrからunique_ptrへ auto_ptrの暗い過去 unique_ptrへの移行 std::moveの役割 ムーブセマンティクスを使おう C++11標準ライブラリとムーブ ムーブ"後"の中身は? ムーブを利用して関数を書く (本文のみ約9500字) まえがき To move or not to move: that is the question. ― Bjarne Stroustrup, 2010(改)*1 プログラミング言語C++の新しい国際標準規格*2
この記事はC++ Advent Calendar 2012の13日目です。 Variadic Templatesとは C++11ではテンプレートで"."を3つ付けることが出来るようになりました、 こんな感じで。 template <class... Ts> これで何が出来るのかというと、0個以上の任意のテンプレート引数を受け取れるようになります。このとき、Tsをテンプレートパックと呼びます。 Variadic Templateはテンプレートクラスと関数テンプレートの両方で使うことが出来ます。 テンプレートクラスの場合 template <class... Ts> class hoge; このように書かかれていれば、 hoge<> hoge< long > hoge< int, short > こんな感じで型を渡すことができるようになります。 また、class...のように型だけでなくint
このエントリは C++ Advent Calendar 2012 8 日目の記事です。 C++ Advent Calendar 2012 というからには普通 C++ のネタを提供するものですが、一応、C++ 関連ではあるのですが言語仕様でもなければライブラリでもないネタです。それだけではなんなので一応小ネタとして「キャストの復習」という内容も書いてみます。 C++ Compiler Farm の紹介 既に一度 Twitter 上で流したネタではあるのですが、「C++ Compiler Farm」 というサイトを作ってみました。 C++ は言語仕様が複雑であり、かつ、標準実装や唯一の実装のようなものが存在しないこともあり処理系によって挙動がまちまちである、というのは C++er は身に染みて良く知っていることだと思います。それでは皆さんの周辺ではコンパイラは何種類くらい利用可能でしょうか?無
Sustainable Security Requirements with the ASVS Josh Grossman provides a brief overview of what the ASVS is, but takes a closer look at balancing trade-offs and prioritizing different security requirements. Josh shares how to make the process repeatable and how to implement it as part of your own organization's requirements process.
Plowing through some devilish details of template argument deduction, the conditional operator and the macro preprocessor, Eric develops a robust FOR_EACH iterator. Whether you're using arrays, strings, or containers, this one does it all. Conditional Love: FOREACH Redux My CS201 "Software Development Methods" professor taught that all anyone would ever need to know about C++'s ternary conditional
目的 この記事は、C++0xのrvalue referenceを完全に解説せんとする目的を以て書かれた。サンプルコードは最小に留め、エラー処理等は省いた。この記事さえ読めば、今日からrvalue referenceを恐れることなく使う本物のC++0xプログラマになれるだろう。 lvalueとrvalueについて Cの時代では、lvalueとrvalueの違いは、代入演算子の左側か右側かという違いだけであった。つまり、left hand value, right hand valueの略である。従って、訳語も、左辺値、右辺値であった。C++においては、これはもはや正しくはない。従って、右辺値、左辺値というのも、誤訳である。それ故に、ここでは、これ以上、左辺値、右辺値という名称を使用しない。 誤解を恐れずにいえば、lvalueとは、明示的に実体のある、名前付きのオブジェクトであり、rvalue
http://thread.gmane.org/gmane.comp.lib.boost.devel/140434/ shared_ptr は, free store 上に参照カウント(と動的な削除子)を保持するオブジェクトを余分に必要とするので,基本的に(時間的・空間的)パフォーマンスとしては intrusive_ptr に劣る.なので, intrusive_ptr のほうが自然なんじゃないかと考える人が多いのだけれど,それに関する議論. 普通は intrusive_ptr が自然だと思われるのに shared_ptr があえてデフォルトとして推奨されているのには,なんらかの rationale があるはず. Peter Dimov 氏(個人的にスマートポインタのスペシャリストだと思っている人)による説明が以下.オレオレ的ちょーてきとー訳付き. http://thread.gmane.o
私は,スカートを履いた女の子に,スカートを履いたままぱんつを脱いで,脱ぎ終わったら右手を挙げるようにと,そう命令した.私は,その子が右手を挙げたのを確かに見た.だが,その子のスカートをめくってみたらぱんつはまだそこにあったのだ! - http://twitter.com/Cryolite/status/8455287843 より一部改変 これは C++ advent calendar の参加記事です。 本ブログエントリは,以降のブログエントリと合わせて, C++0x のメモリモデルに関する規則を具体的な例や意味付けを交えた形で説明していくことを目的としています. 1998年に制定され,2003年に改訂された現行の C++ プログラミング言語標準規格 (以下, C++03) においては,プログラム中にただ1つの実行スレッドしか存在しない場合の規定しか記述されていませんでした*1.しかし, C
http://cpplover.blogspot.com/2011/07/mutex.html C++ のソースコード中に「途中のreturnや例外に気をつけること」などといったコメントはあってはならないため,補足. // 排他的にアクセスするリソース class exclusive_resource { public : std::vector<int> v ; private : std::mutex m ; public : void lock() { m.lock() ; } void try_lock() { m.try_lock() ; } void unlock() { m.unlock() ; } } ; exclusive_resource res1, res2 ; void thread1() {// res1のみを操作 std::lock_guard< exclusi
boostにはメモリプールをやってくれる親切なobject_poolと言うライブラリがある.この使い方は至って簡単で,テンプレートの引数にクラスを渡してプール用のオブジェクトを作成するだけとなる.指定したクラスの生成を行いたい場合(new classに相当)はconstruct関数を,削除したい場合(delete classに相当)はdestroy関数を呼び出すだけである.サンプルプログラムは以下のとおりとなる. #include <iostream> #include <string> #include <boost/pool/object_pool.hpp> class obj { public: std::string str; obj() { } virtual ~obj() { std::cout << "delete: " << str << std::endl; } }; i
昨日、「pthread_createにはメンバ関数をつっこめない。」というエントリを書きましたが、弊社技術顧問であるI社のT氏より助言を頂きまして、正確にはダイナミックなメンバ関数をつっこめないということでした。つまり、staticメンバ関数であれば、pthread_createの引数にできます。 で、その際に頂きましたサンプルコードです。 #include <pthread.h> #include <iostream> class Hoge { public: Hoge(const std::string& str) : str_(str) { } void print() { std::cout << str_ << " > Hoge::print()" << std::endl; } static void* run(void* instance) { reinterpret_cas
This page has been incorporated into another. If you are not redirected automatically, click here. For questions related to the use of GCC, please consult these web pages and the GCC manuals. If that fails, the gcc-help@gcc.gnu.org mailing list might help. Comments on these web pages and the development of GCC are welcome on our developer list at gcc@gcc.gnu.org. All of our lists have public archi
I'm running Ubuntu 8.04 and I ran the command: $ ctags -R --c++-kinds=+p --fields=+iaS --extra=+q -f ~/.vim/tags/stdlibcpp /usr/include/c++/4.2.4/ to generate a ctags database for the standard C++ library and STL ( libstdc++ ) on my system for use with the OmniCppComplete vim script. This gave me a very reasonable 4MB tags file which seems to work fairly well. However, when I ran the same command
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く