2019年1月6日日曜日

0: シリーズ「C++を理解することをお許しください」の目次

| このシリーズの目次 | このシリーズの次の記事>

目次


1: 'データ'、'変数'、'表現'、'値'、C++やその他のプログラミング言語において
残念ながら、それらの用語は広くずさんに使われており、そうした使用法が、さもなければ理解可能であったはずの多くの叙述を台無しにしています。
2: C++における'リファレンス': 違う!「変数の別名」じゃない!
「リファレンスとは変数の別名のことである」のようなずさんな説明は葬り去られなければなりません。もしもそれをずさんだと認知できなければ、それは恥ずべきことです。
3: C++における「Lvalue」および「Rvalue」?それらは値じゃない!
それらは実体とかけ離れた名称であり、それらについての広く流布された説明が意味をなしていないのは、それらのコンセプトを値として説明しているからです。
4: 「ムーブセマンティクス」、「xvalue」、「prvalue」、「glvalue」?実体とかけはなれた名称
それらは全て実体とかけはなれた名称です(「lvalue」および「rvalue」と同様に)、そして、正しい理解は、それが実体とかけはなれた名称であると理解されてはじめて始まります。
5: C++における'this'はポインターでも変数でもない
なぜ、'this'は、いわゆる「rvalue」なのか?'this'はポインターでも変数でもないからです。
6: C++における'コンスタントメソッド: 一般的な説明の半分は誤っている
コンスタントメソッドの定義は、「当該オブジェクトの状態を変更しないメソッド」ではありません。そこでの取り違えが一部の混乱の原因になっています。
7: C++スタンダードコンテナ互換のカスタムコンテナを作成する
スタンダード'map'、'list'、'set'、'vector'、'queue'、'stack'、'priority_queue'は、拡張することが非推奨とされている。えーと . . .、それで?
8: C++スタンダード'map'互換の要素群順序維持マップを作成する
要素群順序を要素群投入順に維持するスタンダードマップはありません。ここに、'::std::map'互換のものがあります。
9: C++テンプレート: インスタンス化、明示的または暗黙的、インライン化
「unresolved external symbol」エラー?「テンプレートクラスまたはファンクション」などというものはありません。インスタンス化とインライン化を区別しましょう。
10: Visual C++の一部の奇癖に対処する方法
C++プロジェクトが、GCCでは問題なくビルドされるのに、Visual C++ではされない?そういういくつかのケースがここで対処されます。
11: C++で最小限systemdデーモンを作成する方法
最も宣伝されているドキュメントたちのほとんどは"fork"、"setsid"、などとし始めますが、それはSysVデーモンについての話であって、systemdデーモンは、もっと容易に作成できます。
12: 「expected primary-expression before '>' token」GCCコンパイルエラー?
そのエラーメッセージは正しくないようであり、その背後にあるルールはリーズナブルでないようだ。. . .それはともかく、問題を解決しよう。
13: オブジェクト群をシリアルに運ぶ、C++オブジェクト群パイプ
シリアルにでなければならない、なぜなら、さもなければ、メモリが使い果たされてしまうから。C++における、オブジェクト群用の、'java.io.PipedWriter' + 'java.io.PipedReader'相当物。
14: 「C2131: expression did not evaluate to a constant」Visual C++コンパイルエラー?
クラススタティックコンスタントフィールドを配列サイズとして使うことに対するエラー。任意のクラススタティック整数フィールドを定義するための新たな正しい(異論はあるかもしれないが)方法がここにあります。
15: C++において最適に日時を取り扱う方法
どのコンテナを使うべきか?いまだに'time_t'および'tm'か?それとも'::std::chrono::time_point'か?各データタイプの特徴を知るべきだ。
16: C++で'const'を取り扱うための徹底的ガイド
''const'はそれをコンスタントにする'のような浅はかな理解では上手くいきません。'const'には、様々な意味があります。
17: WindowsクリップボードをC++で: マルチフォーマットにて
Win32 APIが使われます。'Bitmap'および'EnhancedMetafile'を含むあらゆるフォーマットがサポートされます。
18: C++におけるヘッダーファイルの趣旨と使用法
なぜC++は、作成し保守するのが煩わしいと思われるかもしれないヘッダーファイルを必要とするのか、Java等は必要としないのに。どのようにそれらを使うべきなのか、もしも使うべきだとしたら?
19: 「unable to match function definition to an existing declaration」Visual C++エラー?
GCCでは起こらないが、Visual C++では起こります。'typedef'に関わっているかもしれず、もしもそうなら、この方法で解決されます。
20: C++ 'inline': 変更が無視される等の信頼できない振る舞い
C++ 'inline'は、忌まわしいが、その理由は、それが、本当にインラインすることを保証しないことではなく、インライン化しているふりすらもしないことだ。
21: 「no arguments to ~ that depend on a template parameter, so a declaration of ~ must be available」C++エラー?
そのエラーは、多分、「2ステージネームルックアップ」によるものだ、それが導入されたのは賢明でなかったが、それでも、それを学ばなければならない。
22: Visual C++で、DLLからシンボル群をエクスポートする
そうしなければ、シンボル群は、DLLの外からは不可視になります。いかに、'__declspec (dllexport)'および'__declspec (dllimport)'をコントロールするか。
23: Visual C++で、コンストラクタテンプレートを明示的にインスタンス化する
あるクラスコンストラクタテンプレートを明示的にインスタンス化するよう意図されたある表現は、Visual C++では得体の知れないエラー群を引き起こします、GCCでは問題ないのであるが。
24: 'std::codecvt<char16_t,char,struct _Mbstatet>'未解決エラー
Visual C++の2015以来のバグで、Microsoftが修正することを拒否していた(2019?まで)、説得力のない理由に基づいて。その問題をいかに回避するか。
25: "C2131: expression did not evaluate to a constant" Visual C++エラー?
エラーメッセージはかなり誤解を招くものです。動作は、確かにC++標準に則ったものであるが、いずれにせよ不便です。GCCは、当該コードを許します。


| このシリーズの目次 | このシリーズの次の記事>