July 17, 2013—The Universal Reference/Overloading Collision Conundrum—Scott Meyers

Time and Location

July 17th, 2013 at 7:00 PM
Microsoft Campus.

Come at 6:45 for pizza sponsored by F5 Networks.


To help address the confusion that arises when rvalue references become lvalue references through reference collapsing, Scott Meyers introduced the notion of "universal references." In this presentation, he builds on this foundation by explaining that overloading functions on rvalue references is sensible and useful, while seemingly similar overloading on universal references yields confusing, unhelpful behavior. But what do you do when you want to write a perfect forwarding function (which requires universal references), yet you want to customize its behavior for certain types? If overloading is off the table, what’s on? In this talk, Scott surveys a variety of options.

Though Scott will give a one-slide overview of the idea behind universal references at the beginning of the presentation, attendees are encouraged to familiarize themselves with the notion in more detail prior to the talk. Links to written and video introductions to universal references are available here.


Scott Meyers is one of the world’s foremost authorities on C++. He wrote the best-selling Effective C++ series (Effective C++, More Effective C++, and Effective STL); published and maintains the annotated training materials Overview of the New C++ (C++11) and Effective C++ in an Embedded Environment; is Consulting Editor for Addison Wesley’s Effective Software Development Series, and, with Herb Sutter and Andrei Alexandrescu, is a principal in C++ and Beyond. He has a Ph.D in Computer Science from Brown University. He’s currently working on a new book, Effective C++11/14, which he hopes to publish in early 2014.


Video | Slides