View analytic
Monday, September 25 • 4:45pm - 5:15pm
Migrating a C++03 library to C++11 case study: Wt 4

Log in to save this to your schedule and see who's attending!

In this talk, we will describe the effort of migrating the API of a reasonably large open source library to C++11. During the migration we wanted to benefit from as many new C++ features as possible, while preserving the semantics and features of the library. We will present various trade-offs in choosing a smart pointer strategy that was compatible with the existing object ownership model. The signal/slot mechanism, formerly based on boost.signals, was simplified and replaced by an implementation relying on lambdas, std::function and std::bind. Many smaller helper classes such as Boost.Any, Boost.Date_Time, and others were replaced by their standard counterparts.

The minimum requirements of Wt 4 are C++11, but we will describe how C++14/17 are used if the compiler supports them.

The main benefit of this transition is that the Wt API became more self-explaining, compilation times have been reduced, run-time performance improved, and the library's user requires less knowledge of boost. We will also discuss secondary consequences of the transition, such as simpler stack traces and the impact on compiler errors.

Wt is an open source widget-based web GUI library, first released in 2006. Before C++11 came around, Wt could be considered to be written in a modern style C++, relying as much as possible on the standard library and using boost libraries for missing C++ features. Wt 4 is the next major release of the library, fully embracing C++11.

Wt 4 is currently available at github, as a branch of our wt repository: https://github.com/emweb/wt/tree/wt4

avatar for Roel Standaert

Roel Standaert

Roel is a software developer at Emweb, the company that markets Wt, the C++ web toolkit. Roel holds a Master's degree in computer science from the University of Leuven.

Monday September 25, 2017 4:45pm - 5:15pm
Meydenbauer TBA #6 Meydenbauer Center
Feedback form isn't open yet.

Attendees (17)