c++に関するfifnelのブックマーク (23)

  • C++の人がHaskellを学ぶべき理由 - Faith and Brave - C++で遊ぼう

    ※「C++(compile time)は純粋関数型言語だよ(by id:DigitalGhost)」というのは全く関係ないです。 C++の人がHaskellを学ぶと、const付けないと気が済まなくなり、 if文よりも条件演算子を多用するようになります。(きっと) Haskellを学ぶ動機としては、モナドとかよりも「副作用(状態の変更)を恐れる」という考えを 身につけることのほうが重要だと思っています。

    C++の人がHaskellを学ぶべき理由 - Faith and Brave - C++で遊ぼう
    fifnel
    fifnel 2009/07/27
  • 『C++テンプレートテクニック』もうすぐ発売です。 - Faith and Brave - C++で遊ぼう

    私とεπιστημηさんの2人で、C++テンプレート書きました。 (ぼくは著者名を名で載せてます) 発売日は2009/04/24(金)で、税込2,940円になります。 内容は、テンプレートの基礎から始まり、テンプレートメタプログラミング、 Boost C++ Librariesの中で使われている手法、C++0xでテンプレートがどのように進化していくか等を紹介しています。 屋とかAmazonで見かけたら買ってやってください。

    『C++テンプレートテクニック』もうすぐ発売です。 - Faith and Brave - C++で遊ぼう
    fifnel
    fifnel 2009/04/09
  • final属性のType Traitsへの影響 - Faith and Brave - C++で遊ぼう

    C++0xの標準ライブラリにはが追加され、その中にis_polymorphicという 型が多態的に振る舞うか(つまり、仮想関数テーブルを持っているか)どうかを 判定するメタ関数があります。 is_polymorphicの実装は、指定された型を継承してみてサイズをチェックする、というものになるはずですが #include <iostream> using namespace std; template <class T> class is_polymorphic { template <class U> struct first : public U {}; template <class U> struct second : public U { virtual void dummy(); virtual ~second(); }; public: static const bool va

    final属性のType Traitsへの影響 - Faith and Brave - C++で遊ぼう
    fifnel
    fifnel 2009/02/15
  • C++0xの並行プログラミング本 - Faith and Brave - C++で遊ぼう

    C++ Concurrency in Action』 著者:Anthony Williams これすごくほしい。 Boost.Threadの作者が書いたです。 追記: 買いました。翻訳しよーっと。

    C++0xの並行プログラミング本 - Faith and Brave - C++で遊ぼう
    fifnel
    fifnel 2009/02/13
  • C++ Concurrency in Action

    pro $24.99 per month access to all Manning books, MEAPs, liveVideos, liveProjects, and audiobooks! choose one free eBook per month to keep exclusive 50% discount on all purchases lite $19.99 per month access to all Manning books, including MEAPs! team 5, 10 or 20 seats+ for your team - learn more

    C++ Concurrency in Action
    fifnel
    fifnel 2009/02/07
  • LokiはC++0xから流行ると思う - Faith and Brave - C++で遊ぼう

    LokiはPolicy-based Designのライブラリとして有名ですが、 その設計にはテンプレート・テンプレート・パラメータを多用されています。 C++03の段階では以下のようなテンプレート・テンプレート・パラメータを用意しても template <template <class T> class Container> class X { Container<int> cont_; }; std::vectorを渡すとエラーになってしまい X<std::vector> x; // エラー! std::vectorのテンプレートパラメータとパラメータ数を合わせるために 以下のようにアロケータを受け取るためのパラメータを追加しないといけません。 template <template <class T, class Alloc=std::allocator<T> > class Conta

    LokiはC++0xから流行ると思う - Faith and Brave - C++で遊ぼう
    fifnel
    fifnel 2009/02/05
  • Google C++スタイルガイド 日本語訳

    Text Drop 翻訳、プログラミング、写真、カメラなどについて書いてます。スタイルガイド/コーディング規約やチートシートなど、ちょっと便利なものを翻訳しています。 TEXTdropでは、C++プログラマーも利用できるパワフルな機能を搭載。C++のコードを書く際に行う手順や避けておきたい工程などを詳しく説明しています。コードスタイルラインの日語版では、日語訳やJ P Yへの換金もサポート。話題性があるオンラインカジノ 日円変換や入金の際のバグにも対応しています。統一性のあるコードを書くためのポイントや規約の種類を参考にする事ができます。

    fifnel
    fifnel 2008/12/22
  • Maybeモナドでしりとり - Faith and Brave - C++で遊ぼう

    作ってみました。 最後と最初がつながってなかったり、最後が「ん」の文字列が入力されたらその後の処理はしません。 はこちら #include <iostream> #include <string> #include <locale> #include <shand/maybe.hpp> using namespace std; using namespace shand; inline maybe<wstring>::type last_and_first(const wstring& last) { return monad_return(last); } struct next { wstring first_; public: typedef maybe<wstring>::type result_type; next(const wstring& first) : first_(f

    Maybeモナドでしりとり - Faith and Brave - C++で遊ぼう
    fifnel
    fifnel 2008/12/15
  • C++0xではわりと必須なscope_guard - Faith and Brave - C++で遊ぼう

    C++にはScope Guardというイディオムがあります。 関数のスコープ抜けたらこの関数実行してね、というものなのですが C++0xにはラムダ式が入るので、それを組み合わせれば関数が抜けたときに実行する処理をその場で書くことができます。 でも、Scope Guardは標準では提供されないので、作ってみました。 shand/scope_guard.hpp #ifndef SHAND_SCOPE_GUARD_INCLUDE #define SHAND_SCOPE_GUARD_INCLUDE namespace shand { namespace detail { class scope_guard_functor_base { bool cancel_; public: scope_guard_functor_base() : cancel_(false) {} virtual ~scop

    C++0xではわりと必須なscope_guard - Faith and Brave - C++で遊ぼう
    fifnel
    fifnel 2008/12/15
  • グーグル、C 向けテストツールをオープンソースで公開 - @IT

    2008/12/12 米グーグルは12月11日、C++用のテストツール「Google C++ Mocking Framework」(Google Mock)をBSDライセンスの下に、オープンソースとして公開したと発表した。Google MockはLinuxWindowsMac OS Xで使える。同社はGoogle Mockを100以上の社内プロジェクトで利用しているという。同社は5カ月前にも「Google C++ Testing Framework」(Google Test)をオープンソースで公開しており、両者を併用することでMockオブジェクトを使ったテスト駆動開発が行えるという。将来的にはGoogle MockをGoogle Test以外のテストツールでも使えるようにしていくという。 Mockオブジェクトは、プロトタイプ設計やテスト時に利用するもので、物のオブジェクトを実装する代

    fifnel
    fifnel 2008/12/13
  • C++0x ラムダ式 - Faith and Brave - C++で遊ぼう

    【2015年12月24日記載 : C++11 ラムダ式の正式なまとめは、こちらのページ「C++11 ラムダ式 - cpprefjp C++語リファレンス」を参照してください】 今まではラムダ式のリビジョンが上がるたびに差分だけ書いてたので C++0xに採択されたラムダ式の解説をあらためて書きます。 【C++03までの問題点】 C++03では、関数をその場で作成する、ということができなかったため 関数を受け取るSTLアルゴリズムを使用する場合、以下のように、アルゴリズムに渡す用の関数を作成しなければなりませんでした。 struct is_even { typedef bool result_type; bool operator()(int x) const { return x % 2 == 0; } }; vector<int> v; find_if(v.begin(), v.end

    C++0x ラムダ式 - Faith and Brave - C++で遊ぼう
    fifnel
    fifnel 2008/12/12
  • C++0xの言語拡張まとめ(※随時更新) - Faith and Brave - C++で遊ぼう

    C++0xの概要はこちら ・Angle bracket テンプレートの連続した山カッコの問題の解決 ・初期化子リスト ユーザー定義のクラスで配列のような初期化構文を実装可能になる ・Uniform initialization コンストラクタの構文と初期化子リストの構文が一様になる ・デリゲーティング・コンストラクタ コンストラクタから他のコンストラクタを呼び出せる ・auto 型推論 ・記憶クラス指定子としての auto の削除 autoキーワードの意味が変更になるため、下位互換がなくなる ・decltype sizeofの型版 ・Template Aliases テンプレートを使用して型の別名を付けることができる。いわゆるtemplate typedef ・拡張sizeof 構造体/クラスのメンバをインスタンス化せずにsizeofすることが可能になる ・nullptr ヌルポインタを表

    C++0xの言語拡張まとめ(※随時更新) - Faith and Brave - C++で遊ぼう
    fifnel
    fifnel 2008/12/04
  • ムーブセマンティクスと右辺値参照 - イグトランスの頭の中

    話のネタはありながら、気が付けば木曜日となり、どうやら毎週木曜日に書くという習慣が自分の中に根付いたようです。 さて今日はC++の話です。ActiveBasicもバージョン5で色々と変わりそうですが、C++も目下新規格の制定に向けて話が進んでいます。その新規格は現在のところ、C++0xと呼ばれています。勿論200x年中の制定を見込まれているからですが、最近ではC++09という言葉もちらほら見かけ始めている気もします。 なお、そんなC++0xの様子はC++の標準化委員会のページで窺い知ることができます。 http://www.open-std.org/jtc1/sc22/wg21/ JTC1/SC22/WG21 – The C++ Standards Committee その中でも今回紹介したいのはムーブセマンティクス (move semantics)と右辺値参照 (rvalue refer

    ムーブセマンティクスと右辺値参照 - イグトランスの頭の中
    fifnel
    fifnel 2008/12/03
  • C++ Glossary

    このページについて C++関係の話に出てくる言葉で、「読んで字の如し」 とはいかない難解語の簡単な解説を並べてみました。Glossaryというより、 むしろ略語辞典になってしまいました。巷で見かけた単語を並べているだけなので、 実際の所ほとんど使われない略語もあったりするかもしれません。 ちゃんとした用語集は Bjarne Stroustrup's C++ Glossary などをご覧になることをオススメします。 用語集 ADL (Argument Dependent name Lookup) 引数に依存した名前の探索。 Argument Based Lookup, Koenig Lookup とも呼ばれる。 #include <iostream> #include <string> ... std::string s; std::cout << s << std::endl; // os

    fifnel
    fifnel 2008/12/03
  • C++0xのマルチスレッド機能

    はじめに C++の新しい標準規格である「C++0x」の大きな新機能の1つが、マルチスレッド処理のサポートです。 従来のC++では、マルチスレッド機能は標準規格の拡張としてコンパイラごとに提供されていたため、細かな部分がコンパイラやプラットフォームによって異なっていました。しかしC++0xでは、すべてのコンパイラが同じメモリモデルに準拠し、同一のマルチスレッド機能を利用できることになります(ただし、従来同様の拡張をコンパイラが独自に提供することも可能です)。 開発者の立場からすると、マルチスレッドのコードを別のコンパイラやプラットフォームへ移植するときの手間を大きく省くことができます。複数のプラットフォーム向けの開発を行う場合でも、種々雑多なAPIや構文をいくつも頭に入れておく必要がありません。 新しいスレッドライブラリの中心を担うのは、実行スレッドを制御するstd::threadクラスです

    C++0xのマルチスレッド機能
    fifnel
    fifnel 2008/12/03
  • STLのalgorithm,functorの使い方. - pyopyopyo - Linuxとかプログラミングの覚え書き -

    STLのalgorithm,functor 関連をシンプルに整理してみました. 以下,文中の op は関数オブジェクト T, T1,T2 はtypename a, b はT型の定数 x, y はT型の変数 or 定数 Ite,first, last はイテレータ とします. equal_to, not_equal_to, greater, less, greater_equal, less_equal 書式 生成されるコード greater()(x, y) x > y less()(x, y) x < y greater_equal()(x, y) x >= y less_equal()(x, y) x <= y equal_to()(x, y) x == y not_equal_to()(x, y) x != y bind1st, bind2nd 書式 生成されるコード bind1st(

    STLのalgorithm,functorの使い方. - pyopyopyo - Linuxとかプログラミングの覚え書き -
    fifnel
    fifnel 2008/12/01
  • C++ã�§Functorã�«ã‚ˆã‚‹å‡¦ç�†ã�®åˆ‡ã‚Šæ›¿ã�ˆ - C++ Snipplr Social Repository

    å�‚考: 1. http://www.newty.de/fpt/functor.html -- ã�»ã�¨ã‚“ã�©ã€�ã�“ã�®ã‚³ãƒ¼ãƒ‰ã�«ã‚³ãƒ¡ãƒ³ãƒˆã‚’加ã�ˆã�Ÿã� ã�‘ã�§ã�™w 2. http://d.hatena.ne.jp/nurs/20080125/1201278130 -- 最åˆ�ã�“ã�®ãƒšãƒ¼ã‚¸ã‚’見ã�¤ã�‘ã�Ÿã�®ã�§ã�™ã�Œã€�ã�“ã�®æ–¹æ³•ã� ã�¨å®Ÿè¡Œæ™‚ã�«ãƒ•ã‚¡ãƒ³ã‚¯ã‚¿ï¼ˆé–¢æ•°ã‚ªãƒ–ジェクト)を作ã�£ã�¦ã€�é…�列ã�«å…¥ã‚Œã�¦å‡¦ç�†ã‚’切り替ã�ˆã€�ã�£ã�¦ã�“ã�¨ã�Œå‡ºæ�¥ã�ªã�„ã�¨æ€�ã�£ã�Ÿã

    fifnel
    fifnel 2008/12/01
  • C++の次期仕様「C++0x」のポイント ~Bjarne Stroustrup氏との対話~

    はじめに ソフトウェア業界には現役開発者の立場を保持しながら、ソフトウェアハウスを経営するオーナー社長がいます。彼らは最新の技術動向を観察しながら、組織を引っ張ります。数10年に及ぶ豊富な開発経験と圧倒的な技術力を誇り、組織内ではカリスマ化している人さえいます。開発者と経営者の2足の草鞋を履きこなすのは簡単なことではないでしょう。彼らは相当のプレッシャーを感じながら日々生きているはずです。 連載で取り上げているBjarne Stroustrup氏は、C++を設計しただけではなく、国際標準化委員会活動の先頭に立っています。同氏もプレッシャーの中で生きている一人のはずです。 今回の質問意図 Stroustrup氏はC++発展の歴史を振り返りながら、“C++の設計作業は所属組織の支援を受けることなく、自分独りで始めたものである”と述懐しています(関連情報:豊田孝の「IT談話館」)。辛い孤独な作

    C++の次期仕様「C++0x」のポイント ~Bjarne Stroustrup氏との対話~
    fifnel
    fifnel 2008/11/21
  • 設計者が考える、C++開発者の現状とは? ~Bjarne Stroustrup氏との対話~:CodeZine

    はじめに ソフトウェア業界はいろいろな特徴を持っています。その特徴の1つに、競争の激しさがあります。先日、Google社はChromeというブラウザを発表しました。発表したからには、先行する他のブラウザのシェアを奪い、多くのユーザーを獲得しなければなりません。Chrome開発チームは、ベンチマークテスト結果などを公表しながら、自分たちのブラウザの優秀さを売り込みに出ています。ブラウザ競争は当然激しさを増します。 ところで、既存ブラウザの開発チームは公開されるベンチマークテスト結果などを黙ってみているのでしょうか。その胸の内はどのようなものなのでしょうか。Chrome開発チームが公開するテスト結果は、既存ブラウザの、例えば、処理速度が遅い、などの相対値を示しているはずです。筆者は既存ブラウザ開発者たちの胸の内が大変気になります。心穏やかならず、といったところでしょう。反論もしたいところでしょ

    設計者が考える、C++開発者の現状とは? ~Bjarne Stroustrup氏との対話~:CodeZine
    fifnel
    fifnel 2008/10/20
  • C++ Final Draft International Standard

    Programming languages --- C++ Languages de programmation --- C++ ISO/IEC JTC 1 Secretariat: ANSI Voting begins on: 1998-04-23 Voting terminates on: 1998-06-23 In accordance with the provisions of Council Resolution 21/1986, this document is circulated in the English language only. PRODUCTION NOTE: The dates in the headers of this FDIS, which currently read "1997", will be changed to "1998" bef

    fifnel
    fifnel 2008/10/06