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.

  1. A glvalue (generalized lvalue) is an expression whose evaluation determines the identity of an object, bit-field, or function.
  2. 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.
  3. 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).
  4. An lvalue is a glvalue that is not an xvalue.
  5. 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.