Crazy Code, Crazy Coders - Walter E. Brown - Closing Keynote Meeting C++ 2019
Walter E. Browns Meeting C++ 2019 Closing Keynote:
Crazy Code and Crazy Coders - Walter E. Brown - Closing Keynote Meeting C++ 2019
by Walter E. Brown
March 19-21, Madrid, Spain
April 1-4, Bristol, UK
June 16-21, Sofia, Bulgaria
By Meeting C++ | Dec 8, 2019 07:33 AM | Tags: walter e. brown security performance meetingcpp intermediate community code bugs basics advanced
Walter E. Browns Meeting C++ 2019 Closing Keynote:
Crazy Code and Crazy Coders - Walter E. Brown - Closing Keynote Meeting C++ 2019
by Walter E. Brown
By Meeting C++ | Dec 7, 2019 09:39 AM | Tags: meetingcpp machinelearning intermediate experimental community basics artificialintelligence ai advanced
The Center Keynote from Meeting C++ 2019 is online:
Can AI replace programmers? - Frances Buontempo - Meeting C++ 2019 Center Keynote
by Frances Buontempo
By Meeting C++ | Dec 6, 2019 10:42 AM | Tags: performance meetingcpp intermediate howard hinnant experimental efficiency community chrono c++20 c++17 c++14 c++11 basics advanced
The first keynote of this years Meeting C++ conference is online:
Opening Keynote Meeting C++ 2019 - Howard Hinnant - Design Rationale for the chrono Library
by Howard Hinnant
By Meeting C++ | Dec 5, 2019 10:06 AM | Tags: meetingcpp intermediate community c++20 c++17 c++11 basics advanced
The lightning talks from Meeting C++ 2019 are now online!
Meeting C++ Youtube Channel
by Jens Weller
From the article:
A few lightning talks I'd like to point to:
Finding hard to find bugs with Address Sanitizer - Marshall Clow
Consistently Inconsistent - Conor Hoekstra
By Adrien Hamelin | Nov 18, 2019 12:42 PM | Tags: c++11 basics
The power of the brace.
5 Ways Using Braces Can Make Your C++ Code More Expressive
by Jonathan Boccara
From the article:
A lot of languages use braces to structure code. But in C++, braces are much more than mortar for holding blocks of code together. In C++, braces have meaning.
Or more exactly, braces have several meanings. Here are 5 simple ways you can benefit from them to make your code more expressive...
By Meeting C++ | Oct 22, 2019 04:58 AM | Tags: meetingcpp intermediate events conference community c++17 c++14 c++11 basics
Some details on the keynotes of this years Meeting C++ conference
Keynote details for Meeting C++ 2019
by Jens Weller
From the article:
With just a few weeks left to Meeting C++ 2019, its time for a closer look at the keynotes!
By Meeting C++ | Sep 9, 2019 12:48 AM | Tags: meetingcpp efficiency conference community basics advanced
Also available in this year: the programs for students and diversity & support for Meeting C++ 2019
Highlighting the Student and Support Tickets for Meeting C++ 2019
by Jens Weller
From the article:
With the Schedule for Meeting C++ 2019 being complete regarding submitted talks, I want to highlight, that there is an opportunity for folks to attend the conference with a free ticket!
By Adrien Hamelin | Sep 6, 2019 11:00 AM | Tags: c++11 basics
Quick A: it is not possible
Recently on SO:
Removing item from vector, while in C++11 range 'for' loop?
No, you can't. Range-based for is for when you need to access each element of a container once.
You should use the normal for loop or one of its cousins if you need to modify the container as you go along, access an element more than once, or otherwise iterate in a non-linear fashion through the container.
For example:
auto i = std::begin(inv); while (i != std::end(inv)) { // Do some stuff if (blah) i = inv.erase(i); else ++i; }
By Adrien Hamelin | Sep 5, 2019 11:41 AM | Tags: basics
Quick A: default constructors are called if available, otherwise there is no initialisation.
Recently on SO:
How do C++ class members get initialized if I don't do it explicitly?
In lieu of explicit initialization, initialization of members in classes works identically to initialization of local variables in functions.
For objects, their default constructor is called. For example, for std::string, the default constructor sets it to an empty string. If the object's class does not have a default constructor, it will be a compile error if you do not explicitly initialize it.
For primitive types (pointers, ints, etc), they are not initialized -- they contain whatever arbitrary junk happened to be at that memory location previously.
For references (e.g. std::string&), it is illegal not to initialize them, and your compiler will complain and refuse to compile such code. References must always be initialized.
So, in your specific case, if they are not explicitly initialized:
int *ptr; // Contains junk string name; // Empty string string *pname; // Contains junk string &rname; // Compile error const string &crname; // Compile error int age; // Contains junk
By Adrien Hamelin | Aug 5, 2019 12:42 PM | Tags: basics
Quick A: optimisation compilers are allowed to do for perfomance.
Recently on SO:
What are copy elision and return value optimization?
Copy elision is an optimization implemented by most compilers to prevent extra (potentially expensive) copies in certain situations. It makes returning by value or pass-by-value feasible in practice (restrictions apply).
It's the only form of optimization that elides (ha!) the as-if rule - copy elision can be applied even if copying/moving the object has side-effects...