C++ User Group Meetings in May

The monthly C++ User Group listing at Meeting C++:

C++ User Group Meetings in May 2017

by Jens Weller

From the article:

The monthly overview on upcoming C++ User Group Meetings. Lots of meeting are already planned for May, even more should be announced in the coming weeks.

There are 2 new C++ User Groups: Minneapolis, Stockholm (LLVM).

Quick Q: shrink_to_fit() vs swap trick

Quick A: Are equivalent, but shrink_to_fit mark the intention.

Recently on SO:

shrink_to_fit() vs swap trick

The swap trick isn't actually constant-time. The cost of performing the actual swap is indeed O(1), but then there's the cost of the std::vector destructor firing and cleaning up all the allocated space. That can potentially have cost Ω(n) if the underlying objects have nontrivial destructors, since the std::vector needs to go and invoke those destructors. There's also the cost of invoking the copy constructors for all the elements stored in the initial vector, which is similarly Ω(n).

As a result, both approaches should have roughly the same complexity, except that shrink_to_fit more clearly telegraphs the intention and is probably more amenable to compiler optimizations.

Continuous integration with Travis CI--Richel Bilderbeek

A very useful tool:

Continuous integration with Travis CI

by Richel Bilderbeek

From the article:

In today’s guest post, Richel Bilderbeek gives us some insight about some the many possible advantages of setting up a continuous integration service, showing some minimal complete examples. Richel works as a PhD in Theoretical Biology at the University of Groningen industry, in his free time teaching people from ages 7-77 about C++, Processing, Arduino and R. Falling inexplicably in love with a C++ code snippet of Doom as a kid, he started using C++ only since 2001, and you can reach him through his website...

QStringView Diaries: Masters Of The Overloads -- Marc Mutz

The third episode of the QStringView Diaries blog series is out, in which Qt developer Marc Mutz describes the ongoing work in implementing a string-view for QString data.

QStringView Diaries: Masters Of The Overloads

by Marc Mutz

From the article:

The last blog post in this series described how to use string-views. This post is about how to design one. In particular, it’s about QStringView‘s constructors. They evolved through a rapid succession of changes. These changes either fixed ambiguities between QString and QStringView overloads, or improved performance. And they all have the same solution: std::enable_if, the Swiss Army Knife for overload control.

This post will take you from where we naïvely started to where we made the impossible possible: overloading a function for arrays and pointers.

In case you missed them, here are the first two instalments:

QStringView Diaries: The Eagle Has Landed

QStringView Diaries: Advances in QStringLiteral

 

 

CppCast Episode 99: Intel C++ Compiler with Udit Patidar and Anoop Prabha

Episode 99 of CppCast the only podcast for C++ developers by C++ developers. In this episode Rob and Jason are joined by Udit Patidar and Anoop Prabha from Intel to discuss Intel's C++ Compiler and suite of Performance tuning Software Development Tools.

CppCast Episode 99: Intel C++ Compiler with Udit Patidar and Anoop Prabha

by Rob Irving and Jason Turner

About the interviewees:

Anoop Prabha is currently a Software Engineer in Software and Services Group at Intel working with Intel® C++ Compiler Support. He played paramount role in driving customer adoption for features like Intel® Cilk™ Plus, Explicit Vectorization, Compute Offload to Intel® Processor Graphics across all Intel targets by creating technical articles and code samples, educating customers through webinars and 1-on-1 engagements. He is currently driving the Parallel STL feature adoption (new feature in 18.0 beta Compiler). Before joining Intel, Anoop worked at IBM India Private Ltd as a Software Developer for 3 years in Bangalore, India and later completed his graduation from State University of New York at Buffalo.

Udit Patidar works in the Developer Products Division of Intel, where he is a product manager for Intel software tools. He was previously a developer working on Intel compilers, focusing on OpenMP parallel programming model for technical and scientific computing workloads. He has extensive experience in high performance computing, both at Intel and previously. Udit holds an MBA in General Management from Cornell University, and a PhD in Computer Science from the University of Houston.

A serious bug in GCC -- Andrzej Krzemienski

In his recent blog post Andrzej described in detail about a bug he discovered in GCC.


A bug in GCC

by Andrzej Krzemienski

From the article:

This post is to inform you about a bug in GCC that may cause memory (or other resource) leaks in your valid C++ programs.

One of the pillars of C++ philosophy is what we often call RAII: if you use classes to manage resources, use constructors for allocating resources and destructors for releasing them, the language makes sure that whatever happens, however you use such classes the resources will get properly released.

 

Pacific++ - Asia-Pacific C++ Conference 2017

The first major C++ conference in the Asia-Pacific region.

pacific++

About the conference:

The conference will be held at the Sudima Hotel on the 26th and 27th of October 2017, in Christchurch, New Zealand.

 

Advanced C++ for Embedded Systems, Swindon UK 8-12 May 2017

Join us to advance your C++03 skills if you work in an embedded environment.

Advanced C++ for Embedded Systems

About the course:

This course addresses the “fear, uncertainty and doubt” of using full C++. Specifically the course deals with: performance and memory considerations of polymorphic functions, exceptions and templates. In addition, complete coverage of the Standard Library (including the STL) is provided, again addressing the specifics of performance and memory models.

This is a five day course, which reviews C++ in the light of real-time systems, addresses the application of C++ in a real-time/embedded environment, and then focuses on the advanced parts of the language. 50% of the course is spent on practical work and the course includes the use of target hardware.

 

Quick Q: Syntax of final, override, const with trailing return types

Quick A: The signature of the function is first.

Recently on SO:

Syntax of final, override, const with trailing return types

The correct syntax should be:

  • override and final should appear after the member function declaration, which including the trailing return type specification, i.e.
auto debug(ostream& os=cout) const ->ostream& override final;
  • override and final should not be used with the member function definition outside the class definition, so just remove them:
auto Derived::debug(ostream& os) const ->ostream&
{
  os << "dval: " << dval << endl;
  return os;
}