タグ

c++に関するGajuのブックマーク (6)

  • C++erは全員戻り値型の後置記法を使おう - ペイントソフト開発日誌

    目次 目次 「戻り値型の後置記法」って何? 何が嬉しいの? 問題点 「戻り値型の後置記法」って何? C++11から導入された言語仕様です。 タイトルの呼び方は自分が勝手に使っているだけで、英語圏だと「trailing-return-type」がよく使われるらしい。 cpprefjp.github.io この仕様を使うと例えば以下のようなコードが int Add(int a, int b) { return a + b; } このようになります。 auto Add(int a, int b) -> int { return a + b; } 何が嬉しいの? この仕様はC++のメタプログラミングで戻り値型の推論を簡単に行う目的で使用されます。 なんだ、そんなC++上級者のための機能なんて下々の人間には関係ないじゃん、とお思いかもしれませんが、この機能にはもう一つわかりやすい大きなメリットがある

    C++erは全員戻り値型の後置記法を使おう - ペイントソフト開発日誌
  • Support For C++11-14-17 Features (Modern C++)

    The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com. This article describes C++11/14/17 features in Visual C++. C++11Feature List Visual C++ implements the vast majority of features in the C++11 core language specification, as well as many C++14 Library features and some features proposed for C++17. The following table lists C++11/14/17 core langu

    Support For C++11-14-17 Features (Modern C++)
  • 詳解、new 演算子 - masugata_kの日記

    new 演算子に対して以下のような疑問はないだろうか? new 演算子と operator new の違いがよく分からない。 プレイスメント (配置構文) new がよく分からない。 クラスのメンバに operator new を用意するというのがどういうことなのかよく分からない。 デバッグ用にリークを検知するメモリ割り当て機構を使いたいがよく分からない。 ヒープの断片化で性能が劣化しているから Boost Pool Library を試してみたいがよく分からない((Boost Pool Library の API には new 演算子関連の話は現れないが、知っておくとイメージが掴みやすくていいと思う。))。 僕も、断片的に知ってはいたが気になっていろいろと調べてみたので、忘れないようにメモしておく。 new 式の構文 C++ 標準*1によれば、new 式の構文は以下のようになっている:

    詳解、new 演算子 - masugata_kの日記
  • C++ Labyrinth

    placement new と delete (2) -- placement delete ところで、placement new があるのならば、placement delete というのもあるのだろうか? 答としては、「ある」。 しかし、関数としての operator delete は定義できるけれども、 new 演算子のように、それを呼び出す delete 演算子の構文はサポートされていない。つまり、 class Foo { public: static void *operator new( size_t size, T& t ); static void operator delete( void *p, T& t ); }; のような placement delete 関数を定義することはできても、 それを T t; Foo *p = new( t ) Foo; … delet

  • C Labyrinth new コスト

    placement new と delete (1) -- placement new オブジェクトを動的に確保したり解放したりする場合は new / delete 演算子を使うわけだが、 デフォルトの new / delete 演算子を呼ぶと、 結局のところ malloc とか free に落ちることになるので、 ヒープ領域の管理コストがかかることになる。 たまに比較的大きなオブジェクトを生成するのに new を呼ぶ分にはそのコストも無視できるだろうが、サイズの小さい (たとえば、4バイトとか) オブジェクトを何百万回も生成 / 破棄するようなプログラムだと、 その時間的空間的な管理コストは無視できないほど大きくなる。 そのような場合に使われるのが、placement new (配置 new) というテクニックである。 次のようにふつうに new 演算子を使うと、 X *x = new

  • BoostPro Computing - Free Downloads

    We're very grateful to the Boost community for creating professional-quality software and an innovative development environment around which we could build a business. We hope, by publishing free software that enhances the Boost experience, that we're “giving back” something of value to the Boost community . BoostPro Binary Installer for Visual C++ For users of Visual C++ 7.1 (Visual Studio 2003),

    Gaju
    Gaju 2009/02/17
  • 1