3 ms·
zabzonk, thank you for raising this point and the discussion it teases out. std::move is nothing but a cast - but it means that means that for every new class,
by schaefer 3y ago
zabzonk, thank you for raising this point and the discussion it teases out.
std::move is nothing but a cast - but it means that means that for every new class, we should be actively considering if a move constructor is appropriate for that class. The consequences of a missing move constructor would be calling the copy constructor... pretty dry stuff I agree. about as exciting as discussing pass by value or pass by reference... but for certain domains of programming (embedded), just as critical. Nicolai M. Josuttis , a 20 year veteran of the standards committee, can be quoted as saying "Move semantics, introduced with C++11, has become a hallmark of modern C++ programming." [1]
But if we take a step back and consider the broader picture I think of "the average language proficiency of the team" as being a very real pressure. If the complexity of the code base creeps above the average proficiency of the team, the health of the code base struggles.
So, here's the thing. As a hiring manager for embedded products, If I can't get applicants that know about std::move(), then the scope of the c++ language has outpaced it's own talent pool, and something like cppfront becomes all the more critical.
[1]: http://www.cppmove.com/ http://www.cppmove.com/
- zarzavat 3y agoYou’ll never find two C++ programmers with the same skill set. Every C++ project has its own peculiar subset of the language. Forget rvalue references, some code doesn’t even use references. This is a result of backwards compatibility. Features can only be added, not removed (or at least only removed if nobody is using them, like export templates and GC). As a result C++ hoovered many different types of users over the years who all had their own idea of what they wanted from the language. For a C++ programmer, navigating this by learning and adapting your skill set for a new project is simply a part of the job. You’ll always be able to find missing spots in even the most grizzled C++ vet’s knowledge.