Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

C++を使うにあたって規格書を読まないということはありえないので、どうしても専門用語が多くなっしまいます。 誰かに質問したときに謎な専門用語が混じっていることもあるかと思います。そんな時のためにかるく解説をします。 ただし、 C++入門者に贈るclass入門とclass/structキーワードの使い分け の内容を理解していることを前提とします。 以下、規格書の引用部分でバージョン間で差異のある部分、及びそれに該当する解説箇所は赤字で示します。 追記 お知らせするのを完全に忘れていたのですが、 にC++20に対応させた内容を記載したのでそちらを参照してください。 user-declared 残念ながら規格書を読んでも判然としません。ただ、ユーザーが関数を宣言したらuser-declaredになるようです。= default/= delete 指定も含むと解するべきかと思われます。 言い換える
はじめに この記事ではC++11以降を扱います。 適宜規格書を参照しますが、翻訳する暇がないのでしません。 英語がわからない場合、雰囲気で頑張ってください。 C++ MIX #1 で発表したことの焼き増しです。 恥ずかしながら、発表に派手にミスがあったので修正後のスライドを上げてます。 Undefined Behaviorと愉快な仲間たち Undefined Behaviorは長いので以降UBと略すことにする。 UBが起こるとどうなるか なんでもあり。 コンパイラがどんなコードを生成しても規格書上合法。 別にHDの中身を全部消すコードを吐き出しても問題ない、そんなことはありえないが。 UBが起こると、そのあとの挙動は一切不明で何が起こるか保証されない。 なので、UBは絶対に起こしてはならない。 何故か無限ループしているが、理由がわからなかったり。 いつの間にかかオブジェクトが死んでたり。
We're in the process of moving all of our work on the STL to GitHub. Current status: Code: Done. Our source code is available under the Apache License v2.0 with LLVM Exception. (See LICENSE.txt and NOTICE.txt for more information.) Build System: In progress. We're working on a CMake build system, which is currently capable of building one flavor of the STL (native desktop). We need to extend this
このブログは、株式会社フィックスターズのエンジニアが、あらゆるテーマについて自由に書いているブログです。 今日も「1マイクロ秒でも速いソフトウェア」を目指している皆様、こんにちは。 フィックスターズでは、CまたはC++を仕事に使うことが圧倒的に多いですが、1年前に社内勉強会で「C/C++の後継になりうる」と噂のRustを取り上げました。 その時に「Rustで書き直したらC++で書いたやつより速くなった」というネタを発表したのですが、先日ネットワークドライバを様々な言語で実装したらRustはCに比べてわずかに遅かったという話を見かけた(日本語記事も参照)ので、自分の発表内容を思い返すついでにブログでご紹介します。 TL;DR 共役勾配法のベンチマークを実行したら C++:1686[ms] Rust:1675[ms] で、必ずC++よりRustの方が速かった(わずかに)。 概要 共役勾配法とは
strict aliasing rules つまり元の型のオブジェクトを別の型のオブジェクトとして使用すること(type punning)は基本的にできないというC/C++におけるルール。 つまり以下のようなことはできず、未定義動作を引き起こします。 float value = 0; int i = *(int*)&value; //undefined behavior これはfloatとintに互換性(aliasingの仮定)がないからです。ここではアライメントや型の大きさの違いといった環境依存の別の問題も存在しますが、これをクリアしても依然として未定義動作です。 static_assert(sizeof(float) == sizeof(int), ""); alignas(float) alignas(int) float value = 0; int i = *(int*)&val
C++17で入る予定の、可変引数でミューテックスを受け取ってスコープを抜けたらロック解除するscoped_lockクラスですが、C++17がDIS (Draft International Standard) の段階になり、仕様の手直しがもうほぼできない段階になってから、引数順の変更が行われました。 P0739R0 Some improvements to class template argument deduction integration into the standard library この変更は、ドラフト仕様 (Working Draft) としては、さらに次のバージョンのC++20に適用されました (Editor’s Reportを参照) 。しかし、libstdc++、libc++といった標準ライブラリの実装や、cppreferenceサイトなどでは、この変更がC++17に
LLVM Coding Standards¶ Introduction¶ This document describes coding standards that are used in the LLVM project. Although no coding standards should be regarded as absolute requirements to be followed in all instances, coding standards are particularly important for large-scale code bases that follow a library-based design (like LLVM). While this document may provide guidance for some mechanical f
※conditionally-supported は C++03 の時点では存在しなかったので、その翻訳である JIS に対応する概念は現れません。この記事では今後便宜のため「条件付き対応」などと呼称することにします。 日本語訳は何やら微妙なものが多いですね。外から見た動作 や 診断を必要としない はもっと用語っぽくした方が良いのではという気がします (観測可能動作 とか 診断不要 なんていうのはどうかな)。それから ○○の動作 の「の」もない方がそれっぽい気がします。 更に、検索してみると NDR の訳は以下のように発散していてまるで統一されていません。 JIS X 3014:2013 より 診断の必要はない 診断は不要とする 診断は要求されない 診断は,不要とする 診断は,必要としない 診断は,必要ない 診断を必要としない 診断メッセージは不要とする 診断メッセージは必要としない 診断
C++で副作用のない無限ループを書くと未定義動作になります。 「未定義動作」というのは口に出すだけでC++プログラマーを震え上がらせる力を持った言葉です。「鼻から悪魔が出てくる」という言葉で説明されるように、未定義動作を含むコードを実行した結果は何も保証することができず、バグの発見やデバッグすら困難にさせます。未定義動作下においてはコンパイラの気分によってコード片が消え、trueとfalseが同時に成立し、タイムトラベルを引き起こします1。 そのためC++ではうっかり未定義動作が埋め込まれないよう注意が払われるのが普通です。 さて、以下のC++のコードは未定義動作を引き起こします。 下の例は実際にclang/LLVMで最適化を有効にしてコンパイルするとでたらめな値を返す関数ができました。 この話をしたところ、何人かに驚かれたり異論を受け取ったりしたので、この話題について少しまとめてみました
本記事は C言語 Advent Calendar 2016 22日目(2週間ぶり3度目) にエントリしています。 当初、12/1で参加した時は4エントリしか参加表明がなかったのに、自転車操業のごとく2度目の参加につながり、気が付いたら25日分全てのエントリが埋まったようです。おめでとうございます。みなさんC言語好きなんですね(?) プログラミング言語Cの sizeof演算子 に関するネタを、基本の"キ"から重箱の隅つつきまで揃えました。1 各話題にはマニアック度(=どうでも良い度合い)を独断と偏見で3段階評価してあります。★が少ないほど広くC言語プログラマに知っておいて欲しい事項(=重要)です。...普通のランキングと逆じゃねーか。 なお本記事の内容は、特に断りがない限りISO/IEC 9899言語仕様(C90/C99/C11)に準じます。また用語の日本語訳はJIS X 3010規格票に合
2010/10/23 Boost.勉強会 #3 関西 プレゼン資料 .pdf とりあえず upload 版Read less
Our free, one-day, virtual conference for the whole C++ community This post is part of a regular series of posts where the C++ product team here at Microsoft and other guests answer questions we have received from customers. The questions can be about anything C++ related: MSVC toolset, the standard language and library, the C++ standards committee, isocpp.org, CppCon, etc. Today’s post is by Bill
若干釣りタイトルですが,私が「Rust にはない C++ の良さ」を募ったところ,12 個ほどの優れている点が報告されたので,まとめてみます. 背景 私は 2018/10/08 開催予定の技術書典5で,『C++でできる!OS自作入門』と題して,Clang+LLD で C++ を使って OS 開発する際の注意点とか C++ の活用例を解説する同人誌を書こうと思っています. その下調べもかねて,このようなツイートをしました. C++好きな人!ぜひ,RustにはないC++の良さを教えてください!— C++でOS自作 技術書典5 お05 (@uchan_nos) 2018年8月24日 そうしたら知り合いからこんなリプが飛んできました. これ、まとめてblogにして!— shoma (@shoma) 2018年8月24日 一部の人に参考になるかもしれないのでまとめることにしました.ただしネタ多めです
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く