2018-11-18

0: The Table of Contents of the Series, 'Let Me Understand C++'

| The table of contents of this series | The next article in this series>

Table of Contents


1: Datum, Variable, Expression, Value in C++ or Any Programming Language
Regrettably, those terms are prevalently being sloppily used, and such usage has ruined many descriptions that could have been intelligible otherwise.
2: Reference in C++: No! Not "an alias of a variable"!
"Reference is an alias of a variable." is a too-sloppy explanation and is untrue and missing the point of why reference is meaningful.
3: "Lvalue", "Rvalue" in C++? They Are Not Values!
They are misnomers, and prevalent explanations on them do not make sense, because they explain the concepts as values.
4: "Move Semantics", "Xvalue", "Prvalue", "Glvalue"? Misnomers
They are all misnomers, as "lvalue" and "rvalue" are, and any correct understanding begins only when they are understood as misnomers.
5: 'this' Is Not Any Pointer or Any Variable in C++
Why is 'this' a so-called "rvalue"? Because it is not any pointer or any variable.
6: Constant Method in C++: Half of the Explanations Are Wrong
The definition of constant method is NOT "a method that does not change the state of the object". The mix-up there is the cause of some confusions.
7: Creating a C++ Standard-Container-Compatible Custom Container
The standard 'map', 'list', 'set', 'vector', 'queue', 'stack', and 'priority_queue' are discouraged to be extended. Well . . ., so?
8: A C++ Standard-'map'-Compatible Elements-Order-Preserved Map
There is no standard map that preserves the elements order in which the elements are put into it. Here is one that is compatible with '::std::map'.
9: C++ Template: Instantiation Explicit or Implicit, Inlining
An "unresolved external symbol" error? No such thing as a "template class or function". Let me distinguish between instantiation and inlining.
10: Dealing with Some Peculiarities of Visual C++
The project is built fine by GCC, but not by Visual C++? Some such cases will be dealt with here.
11: How to Create a Minimal Systemd Daemon in C++
Most of the most-promoted documents begin to "fork", "setsid", etc., which are about SysV daemons, while a systemd daemon can be created more easily.
12: An "expected primary-expression before '>' token" GCC Compile Error?
The error message seems not correct, and the underlying rule seems not reasonable. . . . Anyway, let me solve the problem.
13: A C++ Objects Pipe, Which Conveys Objects Serially
It has to be serially because otherwise, the memory would be used up. A C++ for-objects equivalent of 'java.io.PipedWriter' + 'java.io.PipedReader'.
14: "C2131: expression did not evaluate to a constant" Visual C++ Compile Error?
The error against using a class static 'const' field as an array size. The new (arguably) right way to define any class static integral field is here.
15: How to Optimally Handle Date and Time in C++
What container should be used? 'time_t' and 'tm' still? Or '::std::chrono::time_point'? The characteristics of each datum type should be known.
16: A Thorough Guide to Dealing with 'const' in C++
A shallow understanding like ''const' makes it constant' does not work. 'const' has different meanings.
17: Windows Clipboard with C++: in Multi-Formats
The Win32 API is used. All the formats including 'Bitmap' and 'EnhancedMetafile' are supported.
18: The Intent and the Usage of Header Files in C++
Why does C++ require header files, which may seem to be annoying to create and maintain, while Java, etc. do not? How should I use them, if I should?
19: An "unable to match function definition to an existing declaration" Visual C++ Error?
Not with GCC, but with Visual C++. It may concern 'typedef', and if so, it will be solved this way.
20: C++ 'inline': Unreliable Behavior Like Ignored Modifications
C++ 'inline' is abhorrent, not because it does not guarantee to really do inlining, but because it does not even pretend to be doing inlining.
21: "no arguments to ~ that depend on a template parameter, so a declaration of ~ must be available" C++ Error?
The error is probably because of "two-stage name lookup", which seems unwise to have been introduced, but has to be learned anyway.
22: Export Symbols From a DLL for Visual C++
Otherwise, the symbols would be invisible from the outside of the DLL. How to control '__declspec (dllexport)' and '__declspec (dllimport)'.
23: Explicitly Instantiate Constructor Template for Visual C++
An expression that is meant to explicitly instantiate a class constructor template causes some enigmatic errors for Visual C++, although fine for GCC.
24: 'std::codecvt<char16_t,char,struct _Mbstatet> Unresolved Error
A Visual C++ since-2015 bug, which Microsoft had refused to fix (until 2019?), based on a unconvincing reason. How to end-run the problem.
25: "C2131: expression did not evaluate to a constant" Visual C++ Error?
The error message is rather misleading. The behavior is compliant with the C++ standard certainly, but is inconvenient anyway. GCC allows the code.


| The table of contents of this series | The next article in this series>