Meeting 20 December 2018
Guaranteed Copy Elision Does Not Elide Copies
VCBlog post by Simon Brand :: Reddit
Continuing the theme of C++ misnomers, value categories are not categories of values; they are characteristics of expressions.
- A glvalue (generalized lvalue) is an expression whose evaluation determines the identity of an object, bit-field, or function.
- A prvalue is an expression whose evaluation initializes an object or a bit-field, or computes the value of an operand of an operator, as specified by the context in which it appears.
- An xvalue is a glvalue that denotes an object or bit-field whose resources can be reused (usually because it is near the end of its lifetime).
- An lvalue is a glvalue that is not an xvalue.
- An rvalue is a prvalue or an xvalue.
That’s a better name for this feature. Not guaranteed copy elision. Deferred temporary materialization.
CppCon 2018: Victor Ciura: Enough string_view to Hang Ourselves
MSVC class layout
Conan, vcpkg or build2?
- Pragmatic choice: vcpkg or Conan (they work today and are complete enough)
- Pragmatic no-brainer choice: vcpkg (it’s the simplest and it have more packages ready)
- Pragmatic but need finer control choice: Conan (it gives more options)
- (Very) Long term choice: Build2 (shows great promises because it uses a coherent model…)
- Ideal choice (from the future): help SG15 (the group reflecting on tools vs C++) define interfaces for build systems and dependency managers so that your choice is not impacted by your dependencies choices.
Improving C++ Builds with Split DWARF
1$ g++ -c -g -gsplit-dwarf main.cpp -o main.o 2$ g++ main.o -o app
Having some fun with higher-order functions
Compile-time raytracer by Tristan Brindle
Iterators: What Must Be Done?
Google C++ Style Guide is No Good
Unlike C++ Core Guidelines that try to explain how to use the language effectively, GSG is about forbidding the use of certain features.
There are issues with the Google C++ style guide, but this article is bad. It is basically just finding contrived cases where you have to use questionable constructs, or wilfully misinterpreting the document.