タグ

C++に関するharu-sのブックマーク (124)

  • C++標準化委員会、ついに文字とは何かを理解する: char8_t - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? C++ Advent Calendar 2018 この記事はC++ Advent Calendar 2018 15日目の記事です。 14日目: VTKライブラリ 16日目: C++のエラー処理との付き合い方 当初見積もりよりも大幅に長い記事となり、投稿したのは12/22で1週間遅刻です。すみません。 お知らせ cpprefjpにchar8_t型追加について解説を書きました。ぎゅぎゅっとコンパクトに、また査読を受けて中立的な表現で書いていますので、よければどうぞ。 UTF-8エンコーディングされた文字の型としてchar8_tを追加 - c

    C++標準化委員会、ついに文字とは何かを理解する: char8_t - Qiita
    haru-s
    haru-s 2022/11/27
  • OpenGLやDirectXなGUIにimguiが最強すぎる - Qiita

    imguiとは imguiは、OpenGLやDirectXなどの描画環境の中で動くGUIフレームワークです(vulkanも?)。 "Immediate Mode GUI"と呼ばれるパラダイムにより、大変短く直感的なコードでGUIを構築できます。 どういうGUIコンポーネントが使えるかは、リポジトリのスクショを見ていただいたほうが良いかと思います。 デバッグや調整、テスト用のGUIを構築することが目的のフレームワークです。 環境 今回この記事ではwindows10, vs2015, Cinder(0.9.0)上でサンプルを作成しました。 Cinder用には専用のimgui拡張があるため、そちらを使用します。 https://libcinder.org/ https://github.com/simongeilfus/Cinder-ImGui的な考え方や、imguiAPIは同じですが、

    OpenGLやDirectXなGUIにimguiが最強すぎる - Qiita
  • C++11標準ライブラリのスレッド安全性 - yohhoyの日記

    C++11標準ライブラリが提供する機能とスレッド安全性(thread safety)についてのメモ*1。C++03以前では処理系依存。 要約:C++標準ライブラリのオブジェクトでは、少なくとも言語組み込みint型と同様のスレッド安全性を提供する。 基的なスレッド安全性 C++標準ライブラリが提供するオブジェクトは、個々の関数動作仕様で特記されるケースを除いて、下記の基的なスレッド安全性を保証する。 異なるスレッド上における異なるオブジェクトに対する操作はデータ競合を引き起こさない。*2(1.10, 17.6.5.9/p2-4) 異なるスレッド上における同一オブジェクトに対する操作は、全スレッドがreadアクセスのみであればデータ競合を引き起こさない。少なくとも一方が変更操作を行う場合はデータ競合を引き起こす。*3 *4(1.10) 明に要求している場合を除いて、引数やコンテナ要素が間接

    C++11標準ライブラリのスレッド安全性 - yohhoyの日記
    haru-s
    haru-s 2013/03/31
  • ストリームの一時オブジェクト - イグトランスの頭の中

    C++11では、iostream関係のオブジェクトを一時オブジェクトとして作成するコードが容易に記述できるようになりました。 #include <fstream> #include <string> int main() { std::string s = "hello world"; std::ofstream("hoge.txt") << s << std::endl; }

    ストリームの一時オブジェクト - イグトランスの頭の中
    haru-s
    haru-s 2012/05/08
  • ストリームの一時オブジェクト その2 実装 - イグトランスの頭の中

    昨日(ストリームの一時オブジェクト)の続きです。内部実装を追ったという話です。 さて、それを実現しているのは、C++の標準ライブラリに新しく追加された以下の関数です。 template <class charT, class traits, class T> basic_istream<charT, traits>& operator>>(basic_istream<charT, traits>&& is, T& x) { return is >> x; } template <class charT, class traits, class T> basic_ostream<charT, traits>& operator<<(basic_ostream<charT, traits>&& os, const T& x) { return os << x; } basic_istreamに

    ストリームの一時オブジェクト その2 実装 - イグトランスの頭の中
    haru-s
    haru-s 2012/05/04
  • Unwind-safe scope(failure)

    D 言語の scope(failure) を極大級 C++ 闇魔法を総投入してでもエミュレートしたいが stack unwind のときにどうしよう問題.

    Unwind-safe scope(failure)
    haru-s
    haru-s 2012/03/25
  • C++11のstd::swapはC++03のstd::swapとは互換性がない

    C++11のstd::swapは、だいぶ大きく変更された。C++03までのswapは、<algorithm>にあり、CopyConstructibleかつAssignable(C++11のCopyAssignableに相当)を要求した。ところが、C++11では、<utility>に移されたあげく、MoveConstructibleかつMoveAssignableを要求するようになった。まるっきり別物になってしまっているのだ。果たして問題を起こさないものだろうか。おぼつかないものだ。 実装例は以下のようになる。 // C++03のswap template < typename T > void swap( T & a, T & b ) { T temp = a ; a = b ; b = temp ; } // C++11のswap template < typename T > void

    haru-s
    haru-s 2012/03/23
  • コンセプトは滅びぬ!何度でもよみがえるさ!コンセプトの力こそC++erの夢だからだ! - spinorのブログ

    有名なあのセリフをいじってみたら、結構ハマっていたので、そのまま記事のタイトルにしました。過度な期待をされた方、ごめんなさい。ネタはタイトルだけです… はじめに これはC++11 Advent Calendar 2011の16日目の記事です。17日目の担当は、@yak_exさんです。Advent Calendarに参加するのは、これが初めてです。よろしくお願い致します。 この記事では、C++11の主要な機能の1つになるはずだった、コンセプトの入門的な紹介をします。皆さんもご存知のとおり、2009年7月のフランクフルト会議においてコンセプトは委員会草案から削除され、C++11ではコンセプトを使用できません。なので、ただ単に業務でC++11を使えるようになりたい方にとっては、コンセプトを勉強する価値はあまり無いかもしれません。ただ、コンセプトの概念を知ることによって、C++プログラミングの、更

    コンセプトは滅びぬ!何度でもよみがえるさ!コンセプトの力こそC++erの夢だからだ! - spinorのブログ
  • C++11時代におけるクラスの書き方 - イグトランスの頭の中

    記事は、C++11 Advent Calendar 2011 : ATNDの2日目の記事です。 C++のclassは様々な使い方ができます。後発のほかの言語ではいくつもの概念に分かれているものも、C++ではすべてclassということもあります。 そこで、C++でclassを定義する際も、classと一括りにせず、自分がいったいどんなclassを書こうとしているのか明確に意識するとよいのではないだろうかと考えました。そのために、私なりのclassの分類をまとめ、この記事を書くことにしました。 これは、各々のプログラミング言語の経験により違いが出ることと思います。異論もあると思いますので、ご自身でも考えてみるとよいと思います。 以下、この記事では4種類に分類しています。 1つ目は「オブジェクト指向プログラミング (OOP) を実現するクラス」です(長いので以下OOPクラスと略します)。 vi

    C++11時代におけるクラスの書き方 - イグトランスの頭の中
    haru-s
    haru-s 2011/12/04
    これは非常に役に立つ解説.クラスの種類について
  • ISO/IEC 14882:2011

    ISO/IEC 14882:2011 Information technology — Programming languages — C++ ISO/IEC 14882:2011 specifies requirements for implementations of the C++ programming language. The first such requirement is that they implement the language, and so ISO/IEC 14882:2011 also defines C++. Other requirements and relaxations of the first requirement appear at various places within ISO/IEC 14882:2011. C++ is a gene

    ISO/IEC 14882:2011
    haru-s
    haru-s 2011/09/04
    C++11仕様書
  • 長らくお待たせいたしました

    目次 ホーム 連絡をする RSS Login Blog 利用状況 投稿数 - 1078 記事 - 2 コメント - 23095 トラックバック - 363 ニュース 著作とお薦めの品々は 著作とお薦めの品々は 東方熱帯林へ。 わんくま 東京勉強会#2 C++/CLI カクテル・レシピ 東京勉強会#3 template vs. generics 大阪勉強会#6 C++むかしばなし 東京勉強会#7 C++むかしばなし 東京勉強会#8 STL/CLRによるGeneric Programming TechEd 2007 @YOKOHAMA C++C++/CLI・C# 適材適所 東京勉強会#14 Making of BOF 東京勉強会#15 状態遷移 名古屋勉強会#2 WinUnit - お気楽お手軽UnitTest CodeZine Cで実現する「ぷちオブジェクト指向」 CUnitによるテスト駆

    haru-s
    haru-s 2011/07/14
    これはいつのC++準拠なのだろう
  • char8_t 欲しい - melpon日記 - HaskellもC++もまともに扱えないへたれのページ

    C++0x からは UTF16 の文字列リテラル(u"...")とその型(char16_t)、UTF32 の文字列リテラル(U"...")とその型(char32_t)が入ります。 そして UTF8 の文字列リテラル(u8"...")も入ります。しかし UTF8 を表す型は入りません。u8"..." は char の配列を返します。 ある関数の引数が "..." と u8"..." のどちらで渡されたのかを区別する方法はありません。残念です。 まあ今更入れろなんて言ったところでどうせ無理だと思うので、諦めて何かうまい方法を探しましょうということで、適当に考えてみました。 struct char8_t { // いろいろ実装 }; const char8_t* u8(const char* str) { return reinterpret_cast<const char8_t*>(str);

    char8_t 欲しい - melpon日記 - HaskellもC++もまともに扱えないへたれのページ
  • [Boost-users] boost::asio connect_timeout example problem.

    Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message I am having a timeout example code problem, modified code is below:class connect_handler { public: connect_handler(io_service& ios) : io_service_(ios), timer_(ios), socket_(ios) { socket_.async_connect( tcp::endpoint(boost::asio::ip::address_v4::loopback(), 32123)

    haru-s
    haru-s 2011/03/24
    boost.asioでタイムアウトを設定
  • C++, boost::thread : スレッドの同期と排他制御 – mutex、conditionクラス

    複数のスレッドから1つの変数にアクセスする際、システム側のスレッドスケジューリング次第で、予期せぬ書き換えが起こってしまう場合があります。その為、ある1つのスレッドが変数にアクセスしている際は他のスレッドをブロックする排他制御やスレッドの同期を行う必要があります。C++Javaのsynchronizedメソッド/ブロックと同じような記法でクリティカルセクションを実装する方法の1つにboost::threadライブラリのmutexとconditionクラスがあります。 mutex クラスの使い方 スレッドの排他制御を実現できます。具体的な使い方は、mutexインスタンスをmutex::scoped_lockクラスのコンストラクタの引数に指定し、そのインスタンスを取得することでロックをかけられます。あるスレッドが上の処理を以ってmutexインスタンスにロックをかけた場合、その他のスレッドは再

    C++, boost::thread : スレッドの同期と排他制御 – mutex、conditionクラス
  • FFTW Home Page

    Introduction FFTW is a C subroutine library for computing the discrete Fourier transform (DFT) in one or more dimensions, of arbitrary input size, and of both real and complex data (as well as of even/odd data, i.e. the discrete cosine/sine transforms or DCT/DST). We believe that FFTW, which is free software, should become the FFT library of choice for most applications. The latest official releas

    haru-s
    haru-s 2011/01/25
    C++での最高速FFT実装
  • C++0x Memory Model 第1回 - 1.9 Program execution - Cry’s Diary

    前回の記事:C++0x Memory Model 第0回 - メモリモデルとは何か 以下では, C++0x プログラミング言語の標準規格として一貫して N3225 を参照しています.文中で (1.9/12) などという表現が出てきた場合は N3225 における条項を指しています. 太字かつ斜字体の言葉 は N3225 で C++0x で定義される用語, 太字の言葉 はブログエントリ中で特別な意味を持たせた用語として定義しているものです. 第1回目のこの記事では,まず,ただ1つの 実行スレッド thread of execution だけを考慮した場合のメモリモデルに関わる基的な事項を説明していきます.複数スレッドが存在する状況下でのメモリモデルに関する説明する上で,単一の実行スレッド内に限定した場合の状況を把握しておくことは必要不可欠なのです. 第0回において,プログラム中にただ1つの

    C++0x Memory Model 第1回 - 1.9 Program execution - Cry’s Diary
    haru-s
    haru-s 2010/12/29
    副作用完了点って言葉がなくなったのか
  • 本の虫: C++0xによるコンパイル時の配列生成

    Don't do this at home. I am professional. 絶対にマネをしてはいけません。 コンパイルタイムプログラミング - 主題のない日記 昨晩、これと同じことがC++で出来るかどうか質問を受けた。5という数字が与えられたときに、0,1,2,2,3,3,3,4,4,4,4,5,5,5,5,5という数列をコンパイル時に生成できるかという問題である。 その時は、プリプロセッサー以外に、どうにもうまい実装方法が思いつかなかった。問題は、再帰を止める方法だ。しかし、今朝、改めて問題を考えると、頑張ればなんとかなるのではないかとも思った。 まず、プリプロセッサーによる実装を考えよう。これは、BOOST.Preprocessorを使えば、簡単に実装できる。簡単というのは、C++のプロにとって簡単という意味である。言うまでもなく、プリプロセッサーは邪道であり、中でもBoost

    haru-s
    haru-s 2010/12/24
    宿題の正しいやり方=「この非常に難しい数学上の難問は、300年以上前に、当時小学生のガウス君が、宿題を真面目にやるのがめんどくさかったという理由によって、見事に解決してくれている」
  • C++ でのビルド時間を短縮するいくつかの方法 - melpon日記 - HaskellもC++もまともに扱えないへたれのページ

    ある程度大きな C++ のコードを書いたことがある人なら大抵はこの問題について考えますよね。まして Boost なんて使っていた日には「コンパイル時間が Boost される」とか言われる訳です。 コンパイル時間を活用してコーヒー入れたりトイレ行ったりブラウジングしたり Twitter に「リビルドなう」とか Post したりといった素晴らしい方法もありますが、ここではビルド時間を短縮する方法を考えていきます。 事前知識 多分どこでも言われてることだと思いますし、結構適当に書いてるので読み飛ばしてもいいと思います。 コンパイルが遅い原因 C++ のコンパイル時間の多くは、プリプロセッサにあります。プリプロセス時に行われる include やマクロの展開でかなり多くの時間を取っています。 きっと Boost.PP なんて使っていた日には「コンパイル時間が Booooooooooooooooos

    C++ でのビルド時間を短縮するいくつかの方法 - melpon日記 - HaskellもC++もまともに扱えないへたれのページ
    haru-s
    haru-s 2010/10/26
    続報って感じだ
  • Boost.勉強会#3で適当なことをしゃべってきました - デ-mk6

    私の発表資料: http://www.slideshare.net/digitalghost/preprocesstime-lambda-expression ソース: http://patch-tag.com/r/digitalghost/pplambda/home , http://sites.google.com/site/ilikemanaka/code/pplambda.tar.bz2 あぁどうしよう。今回は大阪開催なので旅程がなくて書くことがないのであった。終わり。 などというだけではあんまりなので、まぁ千里中央の地形はやばいですね。前にも第一回GC勉強会のときに行きましたが、会場の建物に入るまでやっぱり迷いました。地上なのにぐぐる地図が役に立たないというすばらしい地形ですね。あと誰も御堂筋線が地下鉄だと信じてくれないのですが、一つ誤解があって、御堂筋線は新大阪以北だと江坂まで

    Boost.勉強会#3で適当なことをしゃべってきました - デ-mk6
    haru-s
    haru-s 2010/10/26
    「だからまぁ、送出側と捕捉側を分離できる仕組みがあればいいですねという話です。」
  • Embarcadero Blogs - Developer Tools - IDERA Community

    Happy Birthday, Delphi Zum 25jährigen auch ein wenig Text und Anekdoten von mir. Wie bin ich eigentlich zu Borland und Delphi gekommen? Das ist eine lange Geschichte..... eigentlich fing alles mit Paradox für Windows an (1992). Damals habe ...