Loading…
C++Now 2015 has ended
Please visit the C++Now website.

Log in to bookmark your favorites and sync them to your phone or calendar.

tutorial [clear filter]
Tuesday, May 12
 

2:30pm

Type Deduction in C++14
C++14 has many ways of naming a type. In addition to using the type's name directly, we have auto, auto &, auto const &, auto &&, decltype(auto), and decltype(some-expression). In C++11, these methods of type deduction only applied to variable declarations, but C++14 adds return type deduction for normal functions.

When should we use this powerful feature, and when should we be more explicit with our types? What new types of libraries do these features allow, and what are the risks?

We will talk about how to design a modern C++ library that takes advantage of type deduction without harming readability.

Slides 

ODP File

Speakers
avatar for David Stone

David Stone

Vice President, Markit
David Stone has spoken at C++Now and Meeting C++. He is the author of the bounded::integer library: http://doublewise.net/c++/bounded/ and has a special interest in compile-time code generation and error checking, as well as machine learning. He works at Markit integrating real-time... Read More →


Tuesday May 12, 2015 2:30pm - 4:00pm
Flug Auditorium

4:30pm

constexpr: C++ At Compile Time
I'm excited about constexpr. It's probably my favorite C++11 feature, and it has become even better with C++14. But when I talk to other developers about constexpr they seem puzzled. What sorts of useful computations can the compiler possibly do before runtime?

I'd like to take this session to explore some of the capabilities that constexpr brings to the table. We'll be looking at compile-time parsing, floating-point computations, containers, and maybe even explore what it would take to make a compile-time std::string. We'll also look at a possible way to work around one of constexpr's limitations.

Slides 

Speakers
avatar for Scott Schurr

Scott Schurr

Staff Software Engineer, Ripple
If you ask his children, they will tell you that Scott has been writing software since dinosaurs roamed the earth. In 1996 Scott learned C++ by working through the exercises in Stroustrup's TC++PL 2nd edition and he has never looked back. Scott is currently working at Ripple Labs... Read More →


Tuesday May 12, 2015 4:30pm - 6:00pm
Flug Auditorium
 
Wednesday, May 13
 

11:00am

Thinking Portable: How and why to make your C++ cross platform
Designing your application to be portable, even if you never intend to go beyond one platform, will lead to cleaner more stable code. We will cover how considering portability will improve your code base; and address the practical considerations you should make to ensure portability if you need it in the future.

Slides 

Speakers
avatar for Jason Turner

Jason Turner

Developer, Trainer, Speaker
Host of C++Weekly https://www.youtube.com/c/JasonTurner-lefticus, Co-host of CppCast http://cppcast.com, Co-creator and maintainer of the embedded scripting language for C++, ChaiScript http://chaiscript.com, and author and curator of the forkable coding standards document http://cppbestpractices.com.I'm... Read More →


Wednesday May 13, 2015 11:00am - 11:45am
Flug Auditorium

11:45am

Developing EDSL's for Boost.Spirit
Teach how to develop Embedded Domain Specific Languages using Boost.Spirit support and how to convert these grammars to parsers and generators from the same grammar.

We will use General Inter-Orb Protocol from CORBA as example of generating parsers and generators from structured heterogenous sequences. Also how to deal with alignment and endianness with the use of Boost.Spirit's grammar locals and parameters.

Speakers
avatar for Felipe Magno de Almeida

Felipe Magno de Almeida

Expertise Solutions


Wednesday May 13, 2015 11:45am - 12:30pm
Bethe

2:30pm

Large-Scale C++: Advanced Levelization Techniques, Part I
Developing a large-scale software system in C++ requires more than just a sound understanding of the logical design issues covered in most books on C++ programming. To be successful, one also needs a grasp of physical design concepts that, while closely tied to the technical aspects of development, include a dimension with which even expert software developers may have little or no experience.In this talk we begin by briefly reviewing the basics of physical design. We then present a variety of levelization and Insulation techniques, and apply them in present-day, real-word examples to avoid cyclic, excessive, or otherwise inappropriate dependencies. Along the way, we comment on how to make the best use of what the C++ language has to offer.

Slides for Part I & II
 

Speakers
avatar for John Lakos

John Lakos

Software Engineer, Bloomberg
John Lakos, author of Large-Scale C++ Software Design, serves at Bloomberg LP in New York City as a senior architect and mentor for C++ Software Development world-wide.  He is also an active voting member of the C++ Standards Committee’s Evolution Working Group. Previously, Dr... Read More →


Wednesday May 13, 2015 2:30pm - 4:00pm
Bethe

2:30pm

switchAny - A Practical Exercise in Template Metaprogramming
Have you heard about template metaprogramming? Have you seen how you can use it to calculate factorials at compile time? Have you thought to yourself that this sounds completely useless?

In this tutorial I present a small but real-world application of template metaprogramming. I show switchAny, a tool to dispatch to different code pieces based on the type contained in a Boost.Any holder. I demonstrate a number of TMP techniques used to develop this tool, including new techniques possible only in C++14 and C++1z.

Link to github repo 

Speakers
avatar for Sebastian Redl

Sebastian Redl

Senior Programmer, Teoco
Sebastian holds a BSc in Software Engineering from the Technical University of Vienna and is currently finishing an MSc. He is working at a small software company called Symena (part of Teoco), and recently spent a year's sabbatical working at Google. He has contributed heavily to... Read More →


Wednesday May 13, 2015 2:30pm - 4:00pm
Flug Auditorium

4:30pm

Large-Scale C++: Advanced Levelization Techniques, Part II
Developing a large-scale software system in C++ requires more than just a sound understanding of the logical design issues covered in most books on C++ programming. To be successful, one also needs a grasp of physical design concepts that, while closely tied to the technical aspects of development, include a dimension with which even expert software developers may have little or no experience.In this talk we begin by briefly reviewing the basics of physical design. We then present a variety of levelization and Insulation techniques, and apply them in present-day, real-word examples to avoid cyclic, excessive, or otherwise inappropriate dependencies. Along the way, we comment on how to make the best use of what the C++ language has to offer.

Slides for Part I && II
 

Speakers
avatar for John Lakos

John Lakos

Software Engineer, Bloomberg
John Lakos, author of Large-Scale C++ Software Design, serves at Bloomberg LP in New York City as a senior architect and mentor for C++ Software Development world-wide.  He is also an active voting member of the C++ Standards Committee’s Evolution Working Group. Previously, Dr... Read More →


Wednesday May 13, 2015 4:30pm - 6:00pm
Bethe

4:30pm

The Price of Shared Pointers or Why Passing them by-reference can be Useful
Shared pointers play a fundamental part of modern C++ programming. However, they come with a price. The price usually known is the overhead of the control object, which can became even more expensive if make_shared() is used. But there is an additional price that can play an important role if good performance is key: synchronization. As a consequence counter-intuitive things such as passing shared pointers by reference can become important. This talk discusses the whole story of shared pointers.

Speakers
avatar for Nicolai Josuttis

Nicolai Josuttis

IT Communication
Nicolai Josuttis (http://www.josuttis.com) is an independent system architect, technical manager, author, and consultant. He designs mid-sized and large software systems for the telecommunications, traffic, finance, and manufacturing industries.He is well known in the programming community because he not only speaks and... Read More →


Wednesday May 13, 2015 4:30pm - 6:00pm
Hudson
 
Thursday, May 14
 

2:30pm

Functions Want To Be Free
When designing a class, what do you make a member function, x.f(), and what do you make a free function, f(x)? When extending an already existing class, do you provide extra functionality with inheritance, composition, or adding new free functions? Do friend functions really violate encapsulation?

This presentation will cover techniques that not only allow safe and efficient interfaces, but also simplify your code. We will combine ideas from generic programming and object-oriented programming to achieve these goals. This talk will start with the basics of good engineering principles and build up from these to explain how to write scalable software. By taking a thoughtful approach to what should be a member function and what should be a free function, you can reduce code duplication and code size, thereby reducing the surface area for bugs.

Slides 

Speakers
avatar for David Stone

David Stone

Vice President, Markit
David Stone has spoken at C++Now and Meeting C++. He is the author of the bounded::integer library: http://doublewise.net/c++/bounded/ and has a special interest in compile-time code generation and error checking, as well as machine learning. He works at Markit integrating real-time... Read More →


Thursday May 14, 2015 2:30pm - 4:00pm
Flug Auditorium

4:30pm

Big Projects, and CMake, and Git, Oh My!
This session serves as a quick introduction to Git and CMake as well as an in-depth explanation of how to configure and use them for large, multi-platform, C++ projects with many open source dependencies. The techniques described have been proven in practice with several C++ projects that include hundreds of libraries, applications, and dependencies.

The conventions described provide several capabilities that go beyond the typical setup. These include the use of the original repositories for third party dependencies, automatic submodule pointer updates, libraries built on an as-needed basis, and methods for contributing patches upstream.

Slides 

Speakers
avatar for David Sankel

David Sankel

Bloomberg
David Sankel is a Software Engineering Manager/TL at Bloomberg and an active member of the C++ Standardization Committee. His experience spans microservice architectures, CAD/CAM, computer graphics, visual programming languages, web applications, computer vision, and cryptography... Read More →


Thursday May 14, 2015 4:30pm - 6:00pm
Hudson
 
Friday, May 15
 

9:00am

The Rule of Seven (Plus or Minus Two): Modern C++ Boilerplate
C++98 had the Rule of Three (or was it Four?). C++11 has the Rule of Five — or Six, if you count the default constructor — or Seven, if you count swap(). Should swap() be a member function? When is a default constructor absolutely mandatory? When is noexcept required for good performance? Should our classes support self-assignment and self-move? When is =default different from empty braces? We'll present reasonable answers to these questions and more.

Slides 

Speakers
avatar for Arthur O'Dwyer

Arthur O'Dwyer

Arthur O'Dwyer is the author of "Colossal Cave: The Board Game," "Mastering the C++17 STL" (the book), and "The STL From Scratch" (the training course). He is occasionally active on the C++ Standards Committee, has a blog mostly about C++, and runs professional C++ training cours... Read More →


Friday May 15, 2015 9:00am - 10:30am
Flug Auditorium

11:45am

IIFE In C++ For Performance and Safety
IIFE (Immediately-Invoked Function Expression) is a common tool used in JavaScript. The idea is to both define an anonymous function and call it in the same expression. The point is to produce a local scope for variables so they do not pollute the global scope.

This same technique can be deployed in C++ to lead to cleaner, safer, more performant code when building up objects which require multiple steps to initialize.

Slides
 

Speakers
avatar for Jason Turner

Jason Turner

Developer, Trainer, Speaker
Host of C++Weekly https://www.youtube.com/c/JasonTurner-lefticus, Co-host of CppCast http://cppcast.com, Co-creator and maintainer of the embedded scripting language for C++, ChaiScript http://chaiscript.com, and author and curator of the forkable coding standards document http://cppbestpractices.com.I'm... Read More →


Friday May 15, 2015 11:45am - 12:15pm
Hudson

2:30pm

Better Code: Concurrency
Despite all of the recent interest, concurrency in standard C++ is still barely in its infancy. This talk uses the primitives supplied by C++14 to build a simple, reference, implementation of a task system. The goal is to learn to write software that doesn’t wait.

Link to Papers and Presentations by author

Experimental future
 

Speakers
avatar for Sean Parent

Sean Parent

Principal Scientist, Adobe
Sean Parent is a principal scientist and software architect for Adobe’s mobile digital imaging group. Sean has been at Adobe since 1993 when he joined as a senior engineer working on Photoshop and later managed Adobe’s Software Technology Lab. In 2009 Sean spent a year at Google... Read More →


Friday May 15, 2015 2:30pm - 4:00pm
Flug Auditorium

4:30pm

An Overview on Encryption in C++
Encryption has become a very important topic for C++ developers and this session will serve as an introduction and overview this topic. This overview will include basic concepts such as symmetric vs. asymmetric encryption. We'll also covers some known algorithms and their implementations in cryptopp, botan and libsodium.

Slides
 

Speakers
avatar for Jens Weller

Jens Weller

CEO, Meetingcpp GmbH
Jens Weller has worked, since 2007, as a freelancer in C++, specialising in consulting, training and programming C++. He started with programming C++ back in 1998. He is an active member of the European C++ community and the founder of the Meeting C++ platform and conference. Jens... Read More →


Friday May 15, 2015 4:30pm - 6:00pm
Bethe