advanced

Functional Patterns in C++ -- Bartosz Milewski

bartosz-milewski-functional.pngIf you're familiar with functional language styles and you want an advanced look at how your favorite functional styles are supported in modern C++, with a dash of Haskell, check out these three videos by Bartosz Milewski:

Functional Patterns in C++ (slides)

by Bartosz Milewski

Part 1, Functors: First the introduction to some common functional patterns like Functor, which, surprisingly pops up everywhere. I'll show the example of a unique_ptr and a vector as Functors. Of course, this is only in preparation for asynchronous functors.

Part 2, Currying, Applicative: A little digression to Haskell and the Maybe functor and the explanation of currying. Then I'll show you the Applicative Functor pattern. This is, of course, in preparation for for the asynchronous applicative functor pattern.

Part 3, Asynchronous API, Monoid, Monad: The encapsulation of asynchronous API that doesn't lead to inversion of control and spaghetti code. Very natural example of a Monad Pattern.

Slides (parts 1-3)

Interestingly, Bartosz' talk ends with a plea for (essentially) future.then and a C#-style await... both of which are under active consideration in the C++ standards committee as part of a potential near-term C++ technical specification on concurrency and parallelism.

Meeting C++ 2013 -- Nov 8-9, Düsseldorf, Germany

As C++ heats up, we continue to see new conferences including this one that launched last year. Europe's newest C++ conference is being held again in 2013, with room for 250 attendees and several standards committee members already signed up to speak:

Meeting C++ 2013 Announcement

Information page

Call for Papers (open until May 15)

After last years great success, we will meet again for 2 days full of C++ in Germany this Fall. Meeting C++ 2013 will be again at the 2nd weekend of November (8./9.11.2013). This time the conference will take place at the Lindner Congresshotel in Düsseldorf. For this year there will be 25 Talks and up to 2 keynotes for the 250 attendees at the conference! ...

There will be 3 Tracks about C++ this year, with the 3rd track being a theme track about C++ and UI. ... The other two tracks will offer general C++ talks like last year.

C++ to JavaScript with Emscripten

Want to run your C++ code in a browser? Check out this project that converts LLVM bitcode to JavaScript™. From the project homepage:

Emscripten is an LLVM to JavaScript™ compiler. It takes LLVM bitcode (which can be generated from C/C++ using Clang, or any other language that can be converted into LLVM bitcode) and compiles that into JavaScript™, which can be run on the web (or anywhere else JavaScript™ can run).

Using Emscripten, you can

  • Compile C and C++ code into JavaScript™ and run that on the web
  • Run code in languages like Python as well, by compiling CPython from C to JavaScript™ and interpreting code in that on the web

They even have Qt demos running!

Continue reading...

Registration open for C++ and Beyond 2013

This just in on the C++ and Beyond blog... Scott Meyers writes:

Registration for C&B 2013 is open!

C++ and Beyond 2013 will take place December 9-12 at the Salish Lodge and Spa in Snoqualmie, Washington, USA (not far from Seattle). Registration is now open.

Attendance will be limited to 64 people.  (That’s the capacity of the ballroom.) Given that C&B has attracted about 100 people each year, it’s essentially certain that we’ll sell out.  As a result, I encourage you to sign up as soon as you can. Once we sell out, we’ll start a waiting list, but past experience suggests that we won’t be able to offer spots to more than a handful of people on that list.

Early bird registration runs through June 9 and features a 10% discount off the standard registration fee.

Click here to register.

Detailed information about C++ and Beyond is available at its web site:

Andrei and Herb and I hope to see you at C&B 2013 in December!

Scott

Open and Efficient Type Switch for C++ -- Solodkyy, Dos Reis, and Stroustrup

Here's a recent highlight from the pre-Portland mailing that you might have missed:

Open and Efficient Type Switch for C++

Yuriy Solodkyy, Gabriel Dos Reis, Bjarne Stroustrup

... we implement a type switch construct as an ISO C++11 library, called Mach7. This library-only implementation provides concise notation and outperforms the visitor design pattern. ... For closed sets of types, its performance roughly equals equivalent code in functional languages, such as OCaml and Haskell.

C++ is a powerful library-building language. Whenever possible, we prefer to add new functionality as a library rather than in the language. This is an excellent example of where a C++ library-only solution can get equivalent performance to the language support included in some popular functional languages.

C++ and Beyond 2013 dates and location finalized

The final dates and location are now set for C++ and Beyond 2013 with Scott Meyers, Herb Sutter, and Andrei Alexandrescu:

December 9-12, 2013 in beautiful Snoqualmie, Washington, USA.

From Scott Meyers' announcement:

About a month ago, I posted tentative dates for C&B 2013.  I cautioned that there was no contract yet, and I’m glad I did, because shortly thereafter we discovered an off-by-one scheduling snafu.  As a result, the dates are not the ones I posted earlier, they’re a day later: Monday evening, December 9, through Thursday, December 12.

The inital C&B in 2010 was held at the Salish Lodge and Spa in Snoqualmie, Washington, USA.  In 2011, we had a larger group in a larger venue, and last year we bumped up the numbers again.   Growth was ours, it seemed, but we sensed that C&B was looking more like a conventional conference and less like the unique event we had originally envisioned. For 2013, we decided to return to our roots, both geographically and organizationally.

C&B 2013 will return to the Salish Lodge and Spa in Snoqualmie, Washington (not far from Seattle). Enrollment will again be limited to the capacity of the ballroom (~64 attendees). Scott will again lead lunchtime walks. Evenings will again feature free-form “hang out with the speakers” sessions. Hotel guestrooms will again boast fireplaces, whirlpool tubs for two, and one whopping big waterfall just steps from the front door. If you were part of C&B 2010, you know what I’m talking about. If you weren’t, ask around: you’ll wish you had been.

We’ll announce more details when they’ve been finalized, including when registration for C&B 2013 will begin. In the meantime, reserve December 9-12 for C++ and Beyond 2013 in Snoqualmie, Washington, USA.

Core C++, 7 and 8 of N: Loops, ODR, and variadic array sorter

Two advanced talks by Stephan T. Lavavej (aka STL) are now available, the second being posted today:

Core C++, 7 of N

In Part 7, STL teaches us about Usual Arithmetic Conversions, Template Metaprogramming (TMP), and shares some of the Visual C++ STL internal implementation (some of it not yet released). Many of you have asked for some treatment of TMP and STL delivers!

Core C++, 8 of N

In part 8, STL digs into the do-while loop, casts, one definition rule (ODR), and his variadic template array sorter. There is a lot of information in this episode, so get comfortable, tune in, and learn.

HPX (High Performance ParalleX) 0.9.5 Released

The High Performance ParalleX (HPX) library has produced its 0.9.5 release. Here's a snippet about HPX from its release announcement.

HPX 0.9.5 Released

[...] HPX (High Performance ParalleX) is a general C++ runtime system for parallel and distributed applications of any scale. It is the first freely available, open source, feature-complete, modular, and performance oriented implementation of the ParalleX execution model. HPX is targeted at conventional architectures and, currently, Linux based systems, such as SMP nodes and conventional clusters. [...]

Continue reading...

C++ Training at All Levels -- Leor Zolman

On-Site C++ Training at All Levels

by industry veteran Leor Zolman

 

Note: For a limited time, any 4- or 5-day training includes the C++11 Overview.

 

Our C++ and C seminars have been designed by some of the best-known, most effective C++ educators practicing today. In addition to materials created by Leor our C++ training repertoire features courses licensed from and supported by industry leaders Dan Saks and Stephen C. Dewhurst.

A Whirlwind Overview of C++11 (1/2-day, author: Leor Zolman)

Advanced C++  (Author: Stephen C. Dewhurst)

Effective C++ (3-, 4- and 5-day versions of courseware by Scott Meyers based on his books)

An Effective Introduction to the Standard Template Library (STL) (Author: Scott Meyers)

C++ for Non-C Programmers (Author: Leor Zolman)

C++ and Object-Oriented Programming (a.k.a. C++ for C Programmers). (Author: Dan Saks)

A sample unit of any course is available upon request.

Contact us today for more information or to schedule an on-site training at your location!

Constexpr Unions -- Andrzej Krzemieński

On using constexpr and unions, with insights into the design of the currently-proposed std::optional<T>:

Constexpr Unions

by Andrzej Krzemieński

I assume you are already familiar with constexpr functions. (If not, see a short introduction here.) [Ed.: We linked to that article recently, so you've seen it if you've been following isocpp.org.]

In this post I wanted to share my experience with using unions in constant expressions. Unions are not very popular due to type-safety hole they open, but they offer some capabilities that I found priceless when working with Fernando Cacciola on std::optional proposal.

Continue reading...