CppCon 2018 has ended

Sign up or log in to bookmark your favorites and sync them to your phone or calendar.

• Software Evolution and Portability [clear filter]
Thursday, September 27


Early Modern C++: How to Handle a C++03 Codebase in $CURRENT_YEAR
C++11 came up 7 years ago, yet not all projects have made the upgrade today.
But that shouldn't stop you from adopting Modern C++, which idioms are quite older than C++11.
Using those patterns will not only ease the pain of working with an older revision of the standard, it will also help you migrate to a more recent compiler.

Join me in this talk for a quick tour of what the Modern C++ philosophy is, how you can apply it to your C++03 codebase while preparing for the future.
Following my experience of working most of the 2010s decade with a large C++03 codebase, I will explain how to emulate C++11 (and later) features and also provide a couple tips and mistakes to avoid when moving to a more recent standard, including how to convince your boss to sponsor it.

avatar for Mathieu Ropert

Mathieu Ropert

Experienced Programmer, Paradox Development Studio
French C++ expert working on (somewhat) historical video games. Decided to upgrade his compiler once and has been blogging about build systems ever since. Past speaker at CppCon, Meeting C++ and ACCU. Used to run the Paris C++ User Group. Currently lives in Sweden.

Thursday September 27, 2018 14:00 - 15:00
Telluride (407)


Signed integers are two's complement
There is One True Representation for signed integers, and that representation is two’s complement. There are, however, rumors of a fantasy world—before C++20—where ones' complement, signed magnitude and "pure binary representations" dwell. That world boasts Extraordinary Values, Padding Bits, and just like our world it hosts swaths of Undefined Behavior.

Join me in exploring this magnificent fantasy world, and discover its antics. Together we'll marvel at how the other representations were forever banished from real-world C++, doomed to cast mere shadows onto our reality.

avatar for JF Bastien

JF Bastien

Compiler engineer, Apple
JF is a compiler engineer. He leads C++ development at Apple.

Thursday September 27, 2018 14:00 - 15:00
Steamboat (403)
Friday, September 28


Large-Scale Changes at Google: Lessons Learned From Five Years of Mass Migrations
Google has one of the largest single C++ codebases on the planet, yet is able to continually update both core libraries and the code which uses them. In this talk, I'll share many of the lessons we've learned across more than five years of doing these kinds of migrations, including:
* Why should you migrate in the first place?
* How hard can it really be?
* What happens when a change can't be done atomically?

I'll also talk about the myriad ways that such a process can go wrong, using various migrations we've done internal to Google to illustrate. In doing so, I'll also point out how you can structure your infrastructure and tooling to enable a successful large-scale change process within your organization.

avatar for Hyrum Wright

Hyrum Wright

Software Engineer, Google
@hyrumwright">Hyrum Wright hates C++ less than the rest of the programming languages he's worked with, and works on large-scale change infrastructure at Google. He writes programs to rewrite other programs, and will eventually put himself out of a job. In a former life, he was an... Read More →

Friday September 28, 2018 10:30 - 11:30
Keystone (404)


Standard Library Compatibility Guidelines
Over the past few years, the C++ Standard committee has discussed what types of things user code can do with the standard library that are guaranteed to be supported between language versions, and what usages are out of bounds. Starting with proposals in Toronto in 2017 (http://wg21.link/p0684r0) and continuing in 2018 (http://wg21.link/p0921), the committee has been moving toward producing a user-facing Standing Document (SD) describing roughly what is and is not supported. These are the rights that the committee reserves in order to make changes to the standard library in the future.

This talk will discuss the details of those proposals and that SD, and what it means for you. What uses of the standard library are guaranteed? What uses are sketchy, but you'll maybe get away with? What uses will make it difficult or impossible for you to upgrade to future language versions?

avatar for Titus Winters

Titus Winters

C++ Codebase Cultivator, Google
Titus Winters has spent the past 6 years working on Google's core C++ libraries. He's particularly interested in issues of large scale software engineer and codebase maintenance: how do we keep a codebase of over 100M lines of code consistent and flexible for the next decade? Along... Read More →

Friday September 28, 2018 13:30 - 14:30
Aspen Highlands Hall (1st Floor)


The Salami Method for Cross Platform Development
Designing, writing and maintaining systems targeting multiple platforms is hard! The same system might simultaneously target desktops, browsers, cloud services and multiple different mobile devices. Each target with it's own requirements, tool-chains, APIs, SDKs and limitations.
Mixing platform specific code with core functionality often leads to spaghetti code resulting in a refactoring and maintenance nightmare that is non-portable, un-testable with ample nooks and crannies for bugs to hide in.

In this talk I'll present a system architecture that I call The Salami Method. The Salami Method finely distinguishes between the different aspects and layers required for exposing platform-independent C++ on different “specific” platforms. At its extreme it strives to create a single, thin, transparent layer for each such aspect so that each layer is more easily built, tested, debugged, managed and maintained.

I will introduce the Salami Method and show a practical example of using it build a single C++ OpenCV app targeting both the desktop and the web with the same codebase.

avatar for Adi Shavit

Adi Shavit

Visioneer, Mr
Adi Shavit is an entrepreneur, speaker, independent consultant, experienced software architect and a computer vision, image processing, and machine learning expert with an emphasis on real-time applications. He specializes in building cross-platform, high-performance software combined... Read More →

Friday September 28, 2018 13:30 - 14:30
Telluride (407)