This event has ended. Visit the official site or create your own event on Sched.

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

•Generic Programming [clear filter]
Monday, September 25


Modern C++ Interfaces: Complexity, Emergent Simplicity, SFINAE, and Second Order Properties of Types
We examine how the increasing complexity of language features related to interfaces in modern C++ has somewhat surprisingly produced increasing simplicity in the interfaces themselves.

One of the major reasons for this emergent simplicity is common use of “substitution failure is not an error” or SFINAE in interface design. Appropriate use of SFINAE allows the production of “do what I mean” or DWIM interfaces that allow experienced designers to embed their judgement in interfaces.

Most of the presentation will consist in examination of practical examples of SFINAE in interface design and development of a simple toolkit that automates construction of compile time template predicates. Abstract syntax trees are evaluated at compile time to enforce complex constraints on types in the SFINAE context.

avatar for Stephen Dewhurst

Stephen Dewhurst

President, Semantics Consulting, Inc.
Steve Dewhurst is the co-founder and president of Semantics Consulting, Inc. Steve is the author of numerous technical articles on C++ programming techniques and compiler design, is the author of the critically acclaimed books C++ Common Knowledge and C++ Gotchas, and is the co-author... Read More →

Monday September 25, 2017 11:00am - 12:00pm
Colossus Theater Meydenbauer Center
Wednesday, September 27


C++ Templates Revised
In 2003 we published "C++ Templates - The Complete Guide". Now, 14 years and 3 major C++ versions later, we are publishing the second edition. The content grew and changed dramatically. And I, the representative application programmer among the authors, learned a lot while at the same time shaking my head again and again.

This talk is a personal overview of the changes Modern C++ brought to generic C++ programming and what that means for ordinary application programmers. It's not only about new features, it's also about the discussions we had regarding style and usability (for example, about our recommendations of how to declare parameters in function templates).

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 September 27, 2017 2:00pm - 3:00pm
Atanasoff Hall Meydenbauer Center


Make Classes Great Again! (Using Concepts for Customization Points)
Learn new ways to think about class design, that you can apply to your own projects!

In this talk we'll start with a simple class that models an HTTP message. We’ll go over the limitations of the simple declaration, then walk through a series of guided improvements. We will explore ways to think about class models, create a concept as a customization point, perform type checking, and document a concept.

The example class we will explore is based on the message container found in the Boost.Beast library. You do not need to know anything (or care) about network protocols. This is about building better classes.

avatar for Vinnie Falco

Vinnie Falco

President, The C++ Alliance
I'm the author of BearShare, DSPFilters, and most importantly Boost.Beast - a C++ header only library that offers implementations for HTTP and WebSockets, located here: https://github.com/boostorg/beast/

Wednesday September 27, 2017 3:15pm - 4:15pm
Colossus Theater Meydenbauer Center


A Soupçon of SFINAE
Following on Arthur's "Template Normal Programming" from CppCon 2016, this will be a concise cookbook of SFINAE recipes — ways of getting the compiler to do one thing in one circumstance and another thing in another circumstance. The recipes presented will include:
- Partial specialization of struct templates
- std::bool_constant
- std::conditional_t
- Expression SFINAE on return types (using decltype)
- Expression SFINAE in a defaulted template type parameter
- std::enable_if_t as a defaulted template type parameter
- Tag dispatch on std::true_type and std::false_type
- "Meta-tag-dispatch" on true and false as template non-type parameters
- priority_tag<N> for tag dispatch with "fallback" cases
- bool_if_t as a template non-type parameter
In each case, we'll show a real code example where the recipe is the clearest and best way to get the job done. This will draw on Arthur's recent "STL From Scratch".

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 runs professional C++ training courses, is occasionally active on the C++ Standards Committee, and has a blog mostly about C... Read More →

Wednesday September 27, 2017 4:45pm - 5:45pm
Ferranti (403) Meydenbauer Center
Thursday, September 28


AMD ROCm and the Heterogeneous System Architecture for HW accelerated C++ and high level languages
Attendees will learn what allows these architectures using computational HW accelerators like GPUs, DSPs and others with native C++, without resorting to proprietary APIs or programming libraries or limited language features. It outlines the architectural pillars that make the accelerators a peer to the host CPUs and support full C++, and an overview of the open source AMD ROCmTM stack and software ecosystem providing the tools to use it on Intel and AMD based host platforms.

avatar for Paul Blinzer

Paul Blinzer

Fellow, AMD
Paul Blinzer works on a wide variety of Platform System Software architecture projects and specifically on the Heterogeneous System Architecture (HSA) System Software at Advanced Micro Devices, Inc. (AMD) as a Fellow in the System Software group. Living in the Seattle, WA area, during... Read More →

Thursday September 28, 2017 8:30pm - 10:00pm
Harvard (406) Meydenbauer Center