タグ

c++に関するngyukiのブックマーク (19)

  • Visual C++ for Linux Development with CMake - C++ Team Blog

    Get notified in your email when a new post is published to this blog In Visual Studio 2017 15.4 you can now target Linux from your CMake projects. This enables you to work on your existing code base that uses CMake as your build solution without having to convert it to a VS project. If your code base is cross-platform you can target both Windows and Linux from within Visual Studio. This post will

    Visual C++ for Linux Development with CMake - C++ Team Blog
  • C++に提案されている統一関数呼び出し文法(Unified Call Syntax): N4165, N4174

    C++に提案されている統一関数呼び出し文法(Unified Call Syntax): N4165, N4174 N4165: Unified Call Syntax N4174: Call syntax: x.f(y) vs. f(x,y) この二つのC++標準化委員会の文章は、統一関数呼び出し文法を提案している。 現在、フリー関数とメンバー関数では、呼び出しの文法が異なる。フリー関数は、f( x, y, z )と呼び出すが、メンバー関数は、x.f( y, z )と呼び出す。これは汎用的なコードを書くのに都合が悪い。 template < typename T > void f( T x ) { // Tがクラス型である場合これを使いたい x.swap( 1, 2 ) ; // Tがクラス型ではない場合これを使いたい f( x, 1, 2 ) ; } 現状では、このようなコードは、テンプ

    ngyuki
    ngyuki 2014/11/05
    c# の拡張メソッドっぽい
  • [obsolete] stringの実装(vc,g++)と扱い方 – ぬるてく

    この記事は陳腐化しました。C++11 から Copy on Write は実装禁止になりました。g++4.5 以降でも消えました。但し、終端文字を必要とする仕様は健在です。 (2013/08/25 追記) std::stringを参照渡しにすると高速化した。何を言っているのか(ry なんて記事を見ると改めてstringの扱いはハマるとこ多いよなあと感じる。結論から言うと可能な限りconst&やiterator-pairを使えばいいんですが。 stringは一つの文字列プールを指す文字列クラスで、vectorと次の点で似ています。 連続したアドレス上に保管される メモリは自動で管理される(大抵は一定量から倍々) 要素に’\0’(NULL文字)を使用可能 但し、その実装は処理系によって結構違います。細かいところまでは読んでいませんが、大まかにvcとgccの実装の特徴を紹介します。 g++4.3

    ngyuki
    ngyuki 2014/10/09
    CoW な実装が禁止されたらしい
  • std::string の正体(gcc-4.4.3)と細かい話 - やた@はてな日記

    # 環境依存な内容な上,無駄に細かい話なので,「そういうこともあるかもねー」くらいに流しちゃってください. (追記 2011-01-11)新しい規格では std::string の Copy on Write(CoW: 書き込み時に複製)が実質禁止になるとのことです.後,gcc 4.5 の時点で CoW はやめてしまうみたいですし,「そんな時代もあった」くらいに軽く流しちゃってください.id:gintenlabo さん,コメントありがとうございます. (追記の続き)個人的には,std::string の CoW 動作は挙動が分かりにくくなるので止める方に賛成です.でも,std::vector なんかを拡張するときはどうするのかな…?コピーしてしまうのか,swap() を使うようにするのか…. (さらに追記 2011-01-11)おおっと,ムーブコンストラクタにムーブ代入演算子なんてものが…

    std::string の正体(gcc-4.4.3)と細かい話 - やた@はてな日記
    ngyuki
    ngyuki 2014/10/09
    CoW な実装が禁止されたらしい
  • C++ の、スマートだと思う人がいるかもしれないコードの書き方12選のつもりが6個ぐらいで断念 - Qiita

    1. 括弧の省略 if, while, for の括弧を省略する人はたくさんいるけど、switch も省略できるよ。 #include <iostream> using namespace std; char const * less_bracket(int n) { switch(n) if(false) case 0: return "zero"; else if(true) case 1: return "one"; else case 2: return "two"; } int main() { cout << less_bracket(0)<<" " << less_bracket(1)<<" " << less_bracket(2); } // 「zero one two」と出力

    C++ の、スマートだと思う人がいるかもしれないコードの書き方12選のつもりが6個ぐらいで断念 - Qiita
    ngyuki
    ngyuki 2014/09/12
  • Big Sky :: C言語の怖い話

    « 「便利」と「感極まってきました」だけでプログラムが書ける日語プログラミング言語「うじひさ」を作った。 | Main | kill で立つハッカー、シェルを濁す » 追記: ほんとは怖くないよ!って話を追記してます。 夏だし怖い話しようぜ! 訳あって一部だけ C++ のコードです。 #include <stdio.h> #include <iostream> int main() { char str[256]; double a = 123.45; int b = 57; int c = 89; sprintf(str, "a=%f b=%d c=%d", a, b, c); std::cout << str << std::endl; sprintf(str, "a=%d b=%f c=%d", a, b, c); std::cout << str << std::endl; st

    Big Sky :: C言語の怖い話
    ngyuki
    ngyuki 2014/08/27
    gcc の printf は実はビルドイン関数だからなにか特殊なことが行なわれているとかだろうか?
  • C++14の言語拡張まとめ - Faith and Brave - C++で遊ぼう

    C++14は、C++11に対するマイナーアップデートです。仕様のバグ修正や、C++11の比較的小さめな機能不足を補うバージョンになっています。 細かすぎる変更はさすがに書きませんが、ある程度大きめの変更を以下にまとめます。 この内容は、正式に策定されるまでに変更される可能性があります。 コア言語 2進数リテラル 変数テンプレート 通常の関数の戻り値型を推論 ジェネリックラムダ 一般化されたラムダキャプチャ constexpr関数の制限緩和 どこからともなく現れる結果の規定(前半, 後半) [[deprecated]]属性 数値リテラルの桁区切り文字 サイズ付きのデアロケーション initializer-listによるaggregate初期化の制約緩和 ロックフリーの定義 シグナルハンドラでできることの制限緩和と明確化 ライブラリ make_unique() コンパイル時整数シーケンス tu

    C++14の言語拡張まとめ - Faith and Brave - C++で遊ぼう
    ngyuki
    ngyuki 2014/08/20
  • CPP(コンパイルしない方の関数型なC言語)プログラミング入門。とりあえずFizzBuzzまで - Qiita

    CPPでプログラミングする記事です。 みなさんれっつCPPプログラミング! CPPって何だよC++じゃねーのか じゃねーんだよ。悪かったな。 いや、まあ、C++に入門する記事を期待したみなさんには申し訳ない限りです。でもBoostとかにもCPPは結構使われているので、知っていて損は無いと思います。 C言語には、マクロという機能があります。これは構文解析の前(プロプロセス時)に行なわれる単純な字句展開機能で、例えば、 // 「#define 名前 値」という形式で宣言する #define MAC 42 // ソースコードにその名前が現れると、値に置換される MAC // 関数みたいにもできる #define F(x) x + 20 // 関数みたいに呼び出す F(22)

    CPP(コンパイルしない方の関数型なC言語)プログラミング入門。とりあえずFizzBuzzまで - Qiita
    ngyuki
    ngyuki 2014/04/29
  • ドワンゴに入社した

    そう。タイトル通りだ。筆者、江添亮はドワンゴに雇用された。一体、どのような経緯でドワンゴに入社するに至ったのか。また、どんな仕事をしているのか。それを説明するには、時系列を追って書いたほうがいいだろう。 2013年8月21日 ふとみると、以下のようなサブジェクトのメールが届いていた。 【ご相談】ドワンゴ主催の C++11, 14 に関する勉強会にスピーカーとしてご参加頂けないでしょうか C++11? C++14? なんと、日C++14などという単語を知っている企業があったのか。しかし・・・ドワンゴ? SPAMだろうか。いや、こんなにピンポイントなSPAMがあるわけがない。 それにしても解せないメールだ。ドワンゴといえば、もちろん、あの有名なニコニコ動画の企業だ。ニコニコ動画と言えばWebサイトだ。ニコニコ動画やその関連サービスの開発にC++を使っているのだろうか。いやまて、たしか子会社

    ngyuki
    ngyuki 2014/02/14
  • std::mem_fun vs std::mem_fn

    ngyuki
    ngyuki 2014/02/05
    std::mem_fun is deprecated.
  • C++03とC++11の違い: 文字列ライブラリ編

    今日も今日とて、C++03とC++11の違いを解説する。今回は、文字列ライブラリー編だ。 変更: basic_stringをリファレンスカウントで実装することを禁止 C++が設計中の時代は、文字列を保持するストレージを文字列クラスで共有して、参照数を記録しておき、変更された時だけ書き換えるような実装が、主に使われていた。 class String { private : char * storage ; unsigned int * count ; public : String() : storage( new char[100] ), count( new unsigned int(0) ) { } // コピー時に共有する String( String const & s ) : storage( s.storage), count( s.count ) { count++ ; }

    ngyuki
    ngyuki 2014/01/10
  • スレッドセーフという幻想と現実 - yohhoyの日記(別館)

    この記事はC++ Advent Calendar 2013の15日目にエントリしています。 内容はC++標準ライブラリとスレッドセーフに関する解説になります。 flickr / rennasverden もくじ What's スレッドセーフ? スレッドセーフという幻想 基型とデータ競合 C++標準ライブラリとデータ競合 C++標準ライブラリ:シーケンスコンテナ編 C++標準ライブラリ:連想コンテナ編 スレッドセーフ RELOADED 基的なスレッドセーフ保証 std::shared_ptr<T> std::rand() std::cout (文のみ約9000字) はじめに マルチスレッド対応の点では他言語に遅れを取っていたプログラミング言語C++ですが、C++11ではようやく標準ライブラリにスレッドサポートが追加されました。C++11スレッドサポートではスレッドクラスstd::thr

    スレッドセーフという幻想と現実 - yohhoyの日記(別館)
    ngyuki
    ngyuki 2013/12/18
  • C++の歴史のスライド資料をGitHubで公開

    江添亮 自由ソフトウェア主義者 C++ Evangelist C++標準化委員会の委員 ドワンゴ社員 C++11を執筆した。 株式会社ドワンゴで働いている。 Mail:boostcpp@gmail.com Twitter:@EzoeRyou GitHub: https://github.com/EzoeRyou 江添亮のマストドン@EzoeRyou 筆者にブログのネタを提供するために、品物をアマゾンお気に入りリスト経由で送りたい場合: Amazon.co.jp: 江添亮: 江添のほしい物リスト 筆者にブログのネタを提供するために、直接に品物を送りたい場合、住所をメールで質問してください。 View my complete profile ► 2020 (31) ► December (2) ► November (2) ► September (2) ► August (4) ► Jul

    ngyuki
    ngyuki 2013/12/05
  • 純粋仮想関数は定義を持てる

    GitHubで公開しているC++参考書に、以下のようなpull requestが送られてきた。 Pure virtual function by daisukekoba · Pull Request #153 · EzoeRyou/cpp-book 純粋virtual関数は、宣言を分ければ、定義も持てるそうだ。実際にまともなC++コンパイラーでコンパイルしてみると、たしかにその通りだ。 どうやら、私の規格の文面の解釈が間違っていたらしい。 C++の規格に曰く、 10.4 paragraph 2 A function declaration cannot provide both a pure-specifier and a definition. ひとつの関数宣言はpure指定子と定義の両方を提供することができない。 これを読むと、以下のコードがエラーになることがわかる。 struct S

    ngyuki
    ngyuki 2013/11/25
  • C++11のgetter/setterについて - Qiita

    そもそもgetter/setterめんどいだけじゃねとか設計的にいらなくね、とかはなしで。 Move Semanticsの恩恵に与ることができるsetter すでに知られていることだが、setterと言うのはmoveとcopy両方を集約して書いても構わない(事が多い)。 class Foo { std::string value; public: Foo() = default; ~Foo() = default; void setValue(std::string value_) { value = std::move(value_); // value_は自明にmoveしていい } }; int main(){ Foo f; std::string x = "test1"; f.setValue(x); // 引数にcopyされて渡る. x = "test2"; f.setValue(

    C++11のgetter/setterについて - Qiita
    ngyuki
    ngyuki 2013/11/20
  • ネタバレ注意:歌舞伎座.tech#2で使うスライド資料

    江添亮 自由ソフトウェア主義者 C++ Evangelist C++標準化委員会の委員 ドワンゴ社員 C++11を執筆した。 株式会社ドワンゴで働いている。 Mail:boostcpp@gmail.com Twitter:@EzoeRyou GitHub: https://github.com/EzoeRyou 江添亮のマストドン@EzoeRyou 筆者にブログのネタを提供するために、品物をアマゾンお気に入りリスト経由で送りたい場合: Amazon.co.jp: 江添亮: 江添のほしい物リスト 筆者にブログのネタを提供するために、直接に品物を送りたい場合、住所をメールで質問してください。 View my complete profile ► 2020 (31) ► December (2) ► November (2) ► September (2) ► August (4) ► Jul

    ngyuki
    ngyuki 2013/10/29
  • C++11: Syntax and Feature

    C++11の文法と機能(C++11: Syntax and Feature) Copyright (C) 2013 江添亮. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GN

    ngyuki
    ngyuki 2013/10/28
  • C++で作るWebアプリケーション

    14 views Boost.勉強会 #12で発表した「C++で作るWebアプリケーション」 ... More… Boost.勉強会 #12で発表した「C++で作るWebアプリケーション」 C++JavaScriptにコンパイルするコンパイラ Emscriptenを使ってC++でブラウザ上で動くアプリケーションを開発する方法を解説します C++で作るWebアプリケーション Presentation Transcript そんなC++の進出を拒んできた領域C++はとてつもなく汎用的な言語である2013年6月22日土曜日 WEB2013年6月22日土曜日 サーバ クライアントこっちは割とどんな言語でも書ける問題はこっち2013年6月22日土曜日 JavaScriptWEBブラウザで動く物を作るために長らく使われてきた言語近代的な多くのブラウザが共通して対応している唯一の言語2013年6月22

  • C++とfinally - 株式会社CFlatの明後日スタイルのブログ

    こんにちは、株式会社CFlatです。 あれほど何でも取り込むC++C++11になってもいまだに採用しない言語仕様で、他の言語にはよく採用されているもの。 幾つかありますが、代表的なものがGC(ガベージコレクション)とfinallyブロックでしょう。 ただ今回は、GCについてはTechnical Reportに既に出ているようですし、Boehm GCというライブラリ(c.f. http://homepage2.nifty.com/aito/gc/gc.html)もありますので割愛します。ちょっとfinallyについて見ていきましょう。 finally文の使い方 finally文は、例えば以下のように使われます。 try { std::cout << "例外を投げるかもしれない処理" << std::endl ; return ; } catch (...) { std::cout << "

    C++とfinally - 株式会社CFlatの明後日スタイルのブログ
    ngyuki
    ngyuki 2013/05/08
  • 1