Home プログラミングC++【C++テンプレートメタプログラミング超入門】もう実行時処理トカゆるふわモテマクロは古い!? スマート女子の今年のクリスマスは C++テンプレートメタプログラミング でモテカワコンパイル時メイク♪
![【C++テンプレートメタプログラミング超入門】もう実行時処理トカゆるふわモテマクロは古い!? スマート女子の今年のクリスマスは C++テンプレートメタプログラミング でモテカワコンパイル時メイク♪](https://cdn-ak-scissors.b.st-hatena.com/image/square/8d40f46c2501e838c736db2d42cd64f23e448725/height=288;version=1;width=512/https%3A%2F%2Fchomado.com%2Fwp-content%2Fuploads%2F2014%2F12%2F40462000.jpg)
C++ Advent Calender 2014(http://qiita.com/advent-calendar/2014/cpp) 11日目の記事です. はじめに 今年はこれまでコンパイル時の話について沢山記事にしてきたので,たまにはリンク時に関連することを記事にしてみようと思います.把握している人にとっては当たり前の内容ですが,日本語情報としてまとまっている記事は案外少ない気がするので初学者等に少しでもお役に立てば幸いです. この記事を執筆するにあたっては最新のWorking draftであるN4140(https://github.com/cplusplus/draft/blob/master/papers/n4140.pdf)を参考にしています.本記事の内容は主に,3 Basic concepts内の3.1 Declarations and definitions,3.2 One
これは C++ Advent Calendar 2014 9日目の記事である。 初めに 「C++03でoptionalを作れるか?」Boost.Spiritを読みながら構文解析ライブラリを自作しようとしてこの問にぶち当たった。できるはずである。なぜならBoost.SpiritはBoost.Optionalを利用しているからだ。Boost.Optionalは他の多くのBoostライブラリと同じくC++03に対応したほとんどの主要なコンパイラで利用することができる。しかし話はそう簡単ではなかった。 変なところや分かりにくいところがあったら指摘をお願いします。 optionalについて optionalについて知らない人のために簡単に紹介する。 optionalは簡潔に言うと「オブジェクトが有効か無効かのフラグを付加するオブジェクトのラッパー」である。Haskellを触ったことのある人ならば、C
はじめに お久しぶりです。KMC OB の id:nojima です。 この記事は KMC Advent Calendar 2014 の10日目の記事です。 昨日は id:murata さんの「受験生応援!Javascriptでひねくれ数列」 でした。 今日は C++ の unique_ptr の話です。 (最初は rvalue について書こうと思っていたのですが、書いてみると unique_ptr だらけになったのでタイトルを変えました。なので、KMC Advent Calendar 2014 に書いてあるタイトルとは食い違っています。すみません) 個人的には C++03 ではなく C++11 を使う最大の理由は unique_ptr の存在だと思っています。 例外発生時にももれなく delete してくれる。 生ポインタとパフォーマンスが同じ。(最適化されている場合) 所有権を型として
現代のC++で例外安全問題を抜きにして、障害に強い強固なコードを書くことはほとんど不可能に近い。以上。 Hurb Sutter [1] 例外処理における目的は、例外の回復と例外の通知の大きく2つあります。残念ながら例外の回復はとても難しく、場合によってはそもそも不可能だったりします。その場合、例外が発生したことをより上位のレイヤーに通知する事で例外処理を託します。この時、例外の通知を受け取った側は何を前提に例外の回復を行えばよいでしょうか。例外の発生によってデータ整合性は崩れてしまっているかもしれません。通知を受け取った上位レイヤーはあらゆる状態を想定して例外の回復を試みなければならないのでしょうか。もしそうだとすれば、ただでさえ難しい例外の回復がいよいよもって現実的ではなくなってしまいます。 明らかに上位レイヤーが持つべき前提条件が存在します。これは例外を通知する側が満たすべき保証と言い
EMC++ Exits Publishing Purgatory! - The View From Aristeia Effective Modern C++ - O'Reilly Effective Modern C++ - Amazon.co.jp Scott Meyersの著書『Effective C++』のC++11とC++14対応である『Effective Modern C++ (略称EMC++)』の予約が開始しました。発売は12月4日になっています。 副題は「42 Specific Ways to Improve Your Use of C++11 and C++14」、日本語だと「C++11とC++14の使い方を改善する42の方法」といったところでしょうか。
「われわれの課題は、どうやって飛行中のジャンボジェットを組み立て直すかだ」 「Microsoft Office」に取り組むMicrosoftのディスティングイッシュドエンジニアIgor Zaika氏は、同社のOfficeチームが直面する難問をこう説明した。Microsoftは、どのように10億人のOfficeユーザーのサポートを継続し、混乱させないようにしながら、Officeの核となるインフラを再構築して「Windows」以外のOSでも動くようにしたのだろうか。 Zaika氏は最近、Facebookの@Scaleカンファレンスで、Officeのクロスプラットフォームアーキテクチャ戦略について語った(TwitterユーザーWalking Cat氏の、同氏のプレゼンテーションへのリンクに感謝する)。その50分間のセッションで、Zaika氏はMicrosoftがどのようにC++を使ってOffic
一部の言語には、finallyという機能がある。あるブロックスコープを抜ける時に、必ず実行される処理を記述することが出来る。 try { // 処理 } finally { // ブロック文を抜けた時に必ず実行される処理 } C++にfinallyがない理由は、特に専用の文法が必要なく、ライブラリで十分なためだ。デストラクターとlambda式を使えばよい。 class scoped_guard { std::function< void() > f ; public : explicit scoped_guard( std::function< void () > f ) : f(f) { } scoped_guard( scoped_guard const & ) = delete ; void operator = ( scoped_guard const & ) = delete ;
This document lives at src/styleguide/c++/c++11.html in a Chromium checkout and is part of the more general Chromium C++ style guide. It summarizes the supported state of new and updated language and library features in recent C++ standards and the Abseil library. This guide applies to both Chromium and its subprojects, though subprojects can choose to be more restrictive if necessary for toolchai
待望のC/C++ IDEをCLionとして公開致します! JetBrainsはソフトウェア開発を生産的で楽しいものにするため常に注力しています。Javaのシンプルなリファクタリングツールに始まり、Java、.NET、Python、Ruby/Ruby on Rails、PHP、JavaScript、HTML、Objective-Cなど様々な言語、プラットフォームに対応してきました。 JetBrainsのスマートなツール群はコードの品質を高めたり、効率良くリファクタリングしたりコーディング出来ることで広く知られています。 CとC++はプログラミング言語の中でも特に歴史が長く、原始スープ(primordial soup)の中でも根強く生き残っているの言語として認識されています。そこでJetBrainsは信念に基づき、C/C++デベロッパの作業をより効率的なものとするため専用のIDEをリリースする
January 2024 December 2023 November 2023 October 2023 September 2023 August 2023 July 2023 June 2023 May 2023 April 2023 March 2023 February 2023 C++ (on Sea) Online February 7-9 ISO C++ committee meeting March 18-23, Tokyo, Japan ACCU 2024 April 17-20, Bristol, UK using std::cpp 2024 April 25-26, Leganes, Spain C++ Now 2024 May 7-12, Aspen, CO, USA ISO C++ committee meeting June 24-29, St. Louis,
We have C++14! - Standard C++ C++14のDIS(Draft International Standard)に対する各国の投票が行われ、満場一致で承認されました。各国から(主に日本から)のコメントによる文面の細かな修正が残っていますが、その作業が完了次第、ISO/IEC 14882:2014(E) Programming Language C++、別名C++14の規格が発行されます。 C++14は、2011年に発行されたC++11に対するマイナーバージョンアップです。小さな機能追加、および文面のバグ修正が含まれます。 C++14の更新内容は、以下のエントリにまとめてあります: C++14の言語拡張まとめ コンパイラの実装状況(言語機能) 次はC++17です。そちらはメジャーバージョンアップになる予定で、その議論はすでに始まっています。
ソフトウェアを正しく理解する唯一の方法はコードを読むことです。 ドキュメントを読めばそのソフトウェアが何を実装しているか分かりますが、どのように実装されているかまでは分かりません。 開発中に何らかのトラブルに悩まされたときや、効率的なコーディングをしたいと思ったとき、下位レイヤのソフトウェアを理解しておけば素早く対処できるシーンが多くあります。 ただ、コードを読むことは簡単なタスクではありません。 現代的なソフトウェアはそれなりの規模のコードを含んでいることがほとんどです。アーキテクチャ間の差異を吸収するためのコードなど、本質的な機能を理解する上ではあまり重要ではないコードも含まれています。 何らかの問題が発生してからコードを読もうと思っても、準備なしでは関連する箇所を探すだけでかなりの労力が必要な作業となります。 従って、普段からコードを読んでおくことが重要です。 また、コードを読むにあ
#ifndef NOVICE_VECTOR_H__ #define NOVICE_VECTOR_H__ template<typename T> class novice_vector { private: T* data_; // 要素格納領域 size_t size_; // 要素数 size_t capacity_; // 容量(格納可能な要素数) public: novice_vector() : data_(nullptr), size_(0), capacity_(0) {} ~novice_vector() { delete[] data_; } size_t size() const { return size_; } size_t capacity() const { return capacity_; } void clear() { size_ = 0; } // 少
目的 この記事は、C++0xのrvalue referenceを完全に解説せんとする目的を以て書かれた。サンプルコードは最小に留め、エラー処理等は省いた。この記事さえ読めば、今日からrvalue referenceを恐れることなく使う本物のC++0xプログラマになれるだろう。 lvalueとrvalueについて Cの時代では、lvalueとrvalueの違いは、代入演算子の左側か右側かという違いだけであった。つまり、left hand value, right hand valueの略である。従って、訳語も、左辺値、右辺値であった。C++においては、これはもはや正しくはない。従って、右辺値、左辺値というのも、誤訳である。それ故に、ここでは、これ以上、左辺値、右辺値という名称を使用しない。 誤解を恐れずにいえば、lvalueとは、明示的に実体のある、名前付きのオブジェクトであり、rvalue
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く