ブックマーク / gintenlabo.hatenablog.com (5)

  • C++11 時代のクラス設計に関する提案 - 野良C++erの雑記帳

    先日,ついに C++11 の主要な機能を一通り実装した GCC-4.8.1 がリリースされた. もう一方の主要な C++ コンパイラである Clang++ でも C++11 の機能は既に全て実装されており, 来る 6/05 に最新版の Clang-3.3 がリリースされ, C++11 対応が完了する見通しだ.*1 このような状況においては, C++11 への乗り換えを検討し始めているプロジェクトも多いことだろう. さて, C++11 では, C++98/03 との互換性を保ちつつ,クラス設計に大きな影響を齎す変化が採用された. すなわち, Move Semantics である. この登場により, C++11 で「良い」とされるクラス設計は, C++98/03 時代とは若干 異なったものとなる. そこで,この記事では,筆者が C++11 において「良い」と考えているクラス設計を提案してみたい

    C++11 時代のクラス設計に関する提案 - 野良C++erの雑記帳
  • C++14 のラムダ式 完全解説 前編 - 野良C++erの雑記帳

    C++14 の Committee Draft が公開された. C++14 は基的には C++11 のマイナーバージョンアップであるが,バグフィックスのみを行っている訳ではなく, C++11 の時点で微妙に使いにくかった機能,特にラムダ式については,大きな機能追加が行われている. そこで, blog では,このエントリから数回に分けて, C++14 のラムダ式について説明してみることにする. 拙い文章になるかとは思うが,読者の理解の助けになれば幸いである. なお,これらの記事を書くにあたって,読者に対して C++11 のラムダ式に対する知識を要求しないように心がけたが, もしかしたら,説明不十分であり,分かりにくい部分があるかもしれない. そのような場合には, の虫: lambda 完全解説 等, C++11 のラムダについて書かれた記事は多いので, それらの記事を読んでみることを

    C++14 のラムダ式 完全解説 前編 - 野良C++erの雑記帳
  • いい加減 僕は T t(x); と auto t = T(x); の違いを blog にまとめるべきかもしれない - 野良C++erの雑記帳

    と http://cpplover.blogspot.jp/2013/04/isexplicitlyconvertible.html のコメント書いてて思ったので,書く. まず些細な違いとして, auto は右辺の値の const や参照を消し飛ばす*1,という点が挙げられる. using T = int const; // Alias declarations; I prefer this to typedef double x = 1.2; T t(x); // decltype(t) is int const auto t = T(x); // const is removed; decltype(t) is int using T = int const&; int x = 42; T t(x); // t is a const reference to x; decltype(t

    いい加減 僕は T t(x); と auto t = T(x); の違いを blog にまとめるべきかもしれない - 野良C++erの雑記帳
  • 自己代入チェックについて - 野良C++erの雑記帳

    驚くべきことに,世の C++er の中には,未だに 「自前のクラスを作る場合は,忘れずに代入演算子を定義し,自己代入チェックをしなければいけない」 という考えを持った人がいるようです. http://d.hatena.ne.jp/nagoya313/20100706/1278428503 確かに,昔はそう言われていました.その理由は, class String { public: char* _p; String( const char* s ){ _p = (char*)malloc( strlen(s) + 1 ); strcpy( _p, s ); } ~String(){ free( _p ); } String& operator=( String& rhs ){ free( _p ); const char* s = rhs.Get(); _p = (char*)malloc(

    自己代入チェックについて - 野良C++erの雑記帳
  • constexpr な boost::addable - 野良C++erの雑記帳

    元ネタ: http://d.hatena.ne.jp/nagoya313/20110718/1311002272 * * * なにジョジョ? operator+= から operator+ を生成すると constexpr にできない? ジョジョ それは operator+= を使うからだよ __.. -―─ 、__ /`       三ミー ヘ、_ ゝ' ;; ,, , ,,     ミミ  , il ゙Z, _〉,..    ////, ,彡ffッィ彡从j彡 〉,ィiiif , ,, 'ノ川jノ川; :.`フ公)了 \.:.:.:i=珍/二''=く、 !ノ一ヾ゙;.;.;) く:.:.:.:lムjイ  rfモテ〉゙} ijィtケ 1イ'´ 〕:.:.|,Y!:!、   ニ '、 ; |`ニ イj'  逆に考えるんだ {:.:.:j {: :} `   、_{__}  /ノ 〉イ 、゙!

    constexpr な boost::addable - 野良C++erの雑記帳
  • 1