C++ Weekly Episode 20: C++17's Fold Expressions - Introduction—Jason Turner
Episode 20 of C++ Weekly.
C++17's Fold Expressions - Introduction
by Jason Turner
About the show:
This week Jason introduces C++17's fold expressions.
By Jason Turner | Jul 18, 2016 12:29 PM | Tags: None
Episode 20 of C++ Weekly.
C++17's Fold Expressions - Introduction
by Jason Turner
About the show:
This week Jason introduces C++17's fold expressions.
By Hartmut Kaiser | Jul 18, 2016 05:28 AM | Tags: performance parallelsim heterogeneous computing distributed computing c++17 c++14 c++11
The STE||AR Group has released V0.9.99 of HPX -- A general purpose parallel C++ runtime system for applications of any scale.
HPX V0.9.99 Released
The newest version of HPX (V0.9.99) is now available for download! Please see here for the release notes.
HPX exposes an API fully conforming to the concurrency related parts of the C++11/C++14/C++17 standards, extended and applied to distributed and heterogeneous computing, and aligned with the ongoing standardization discussions.
From the announcement:
By Blog Staff | Jul 15, 2016 01:57 PM | Tags: None
The 2016-07 mailing of new standards papers is now available.
NOTE: A number of these papers have already been publicized on this blog. This is the complete list including ones not previously publicized.
2016-07 post-Oulu | |||||||
---|---|---|---|---|---|---|---|
WG21 Number | Title | Author | Document Date | Mailing Date | Previous Version | Subgroup | Disposition |
N4595 | WG21 2016-06-10 Telecon Minutes | Jonathan Wakely | 2016-06-15 | 2016-07 | |||
N4596 | PL22.16 Jacksonville Minutes (revised) | Jonathan Wakely | 2016-04-01 | 2016-07 | |||
N4597 | WG21 2016-06 Oulu Minutes | Jonathan Wakely | 2016-07-11 | 2016-07 | |||
N4598 | PL22.16 2016-06 Oulu Minutes | Jonathan Wakely | 2016-07-10 | 2016-07 | |||
N4599 | 2016-08 LWG Meeting | Robert Douglas | 2016-07-02 | 2016-07 | |||
N4600 | Working Draft, C++ Extensions for Library Fundamentals, Version 2 | Geoffrey Romer | 2016-07-01 | 2016-07 | |||
N4601 | Editor's Report for the Library Fundamentals TS | Geoffrey Romer | 2016-07-01 | 2016-07 | |||
N4602 | WG21 telecon minutes - pre-Oulu (revised) | Jonathan Wakely | 2016-07-10 | 2016-07 | |||
N4603 | Editor's Report -- Committee Draft, Standard for Programming Language C++ | Richard Smith | 2016-07-12 | 2016-07 | |||
N4604 | C++17 CD Ballot Document | Richard Smith | 2016-07-12 | 2016-07 | |||
N4605 | missing | ||||||
N4606 | Working Draft, Standard for Programming Language C++ | Richard Smith | 2016-07-12 | 2016-07 | |||
P0003R3 | Removing Deprecated Exception Specifications from C++17 | Alisdair Meredith | 2016-06-23 | 2016-07 | P0003R2 | Core | |
P0003R4 | Removing Deprecated Exception Specifications from C++17 | Alisdair Meredith | 2016-06-25 | 2016-07 | P0003R3 | Core | |
P0028R4 | Using attribute namespaces without repetition | J. Daniel Garcia, Daveed Vandevoorde | 2016-06-22 | 2016-07 | P0028R3 | Core | Adopted 2016-06 |
P0032R3 | Homogeneous interface for variant, any and optional (Revision 3) | Vicente J. Botet Escriba | 2016-05-24 | 2016-07 | P0032R2 | Library Evolution | Adopted 2016-06 |
P0035R4 | Dynamic memory allocation for over-aligned data | Clark Nelson | 2016-06-21 | 2016-07 | P0035R3 | Core, Library Evolution | Adopted 2016-06 |
P0040R3 | Extending memory management tools | Brent Friedman | 2016-06-24 | 2016-07 | P0040R2 | Library Evolution, SG14 | Adopted 2016-06 |
P0053R1 | C++ Synchronized Buffered Ostream | Lawrence Crowl, Peter Sommerlad, Nicolia Josuttis | 2015-10-24 | 2016-07 | P0053R0 | Library evolution, Concurrency, Library | |
P0053R2 | C++ Synchronized Buffered Ostream | Lawrence Crowl, Peter Sommerlad, Nicolia Josuttis | 2016-07-05 | 2016-07 | P0053R1 | Library evolution, Concurrency, Library | |
P0057R5 | Wording for Coroutines | Gor Nishanov | 2016-07-10 | 2016-07 | P0057R4 | Core, Library | |
P0063R3 | C++17 should refer to C11 instead of C99 | Clark Nelson, Hans Boehm | 2016-06-23 | 2016-07 | P0063R2 | Library Evolution | Adopted 2016-06 |
P0067R3 | Elementary string conversions, revision 2 | Jens Maurer | 2016-06-23 | 2016-07 | P0067R2 | Library | Adopted 2016-06 |
P0067R4 | Elementary string conversions, revision 4 | Jens Maurer | 2016-07-11 | 2016-07 | P0067R3 | Library | |
P0076R3 | Vector and Wavefront Policies | Arch Robison, Pablo Halpern, Robert Geva, Clark Nelson, Jens Maurer | 2016-07-07 | 2016-07 | P0076R2 | Library Evolution | |
P0083R3 | Splicing Maps and Sets (Revision 5) | Alan Talbot, Jonathan Wakely, Howard Hinnant, James Dennett | 2016-06-24 | 2016-07 | P0083R2 | Library Evolution | Adopted 2016-06 |
P0084R2 | Emplace Return Type (Revision 1) | Alan Talbot | 2016-06-23 | 2016-07 | P0084R1 | Library Evolution, Library | Adopted 2016-06 |
P0088R3 | Variant: a type-safe union for C++17 (v8) | Axel Naumann | 2016-06-23 | 2016-07 | P0088R2 | Library | Adopted 2016-06 |
P0091R3 | Template argument deduction for class templates (Rev. 6) | Mike Spertus, Faisal Vali, Richard Smith | 2016-06-24 | 2016-07 | P0091R2 | Core | Adopted 2016-06 |
P0122R3 | span: bounds-safe views for sequences of objects | Neil MacIntosh | 2016-07-10 | 2016-07 | P0122R2 | Library Evolution | |
P0124R2 | Linux-Kernel Memory Model | Paul E. McKenney, Ulrich Weigand, Andrea Parri, Boqun Feng | 2016-06-26 | 2016-07 | P0124R1 | Concurrency | |
P0127R2 | Declaring non-type template arguments with auto | James Touton, Mike Spertus | 2016-06-23 | 2016-07 | P0127R1 | Evolution | Adopted 2016-06 |
P0135R1 | Wording for guaranteed copy elision through simplified value categories | Richard Smith | 2016-06-20 | 2016-07 | P0135R0 | Adopted 2016-06 | |
P0137R1 | Core Issue 1776: Replacement of class objects containing reference members | Richard Smith | 2016-06-23 | 2016-07 | P0137R0 | Core | Adopted 2016-06 |
P0145R3 | Refining Expression Evaluation Order for Idiomatic C++ | Gabriel Dos Reis, Herb Sutter, Jonathan Caves | 2016-06-23 | 2016-07 | P0145R2 | Core | Adopted 2016-06 |
P0174R2 | Deprecating Vestigial Library Parts in C++17 | Alisdair Meredith | 2016-06-23 | 2016-07 | P0174R1 | Library Evolution | Adopted 2016-06 |
P0175R1 | Synopses for the C library | Thomas Koeppe, Richard Smith | 2016-06-24 | 2016-07 | P0175R0 | Library | Adopted 2016-06 |
P0180R2 | Reserve a New Library Namespace Future Standardization | Alisdair Meredith | 2016-06-23 | 2016-07 | P0180R1 | Library Evolution | Adopted 2016-06 |
P0181R1 | Ordered By Default | Alisdair Meredith | 2016-06-23 | 2016-07 | P0181R0 | Library Evolution | Adopted 2016-06 |
P0192R1 | Adding a Fundamental Type for Short Float | Boris Fomitchev, Sergei Nikolaev, Olivier Giroux, Lawrence Crowl | 2016-02-14 | 2016-07 | P0192R0 | Evolution | |
P0209R2 | make_from_tuple: apply for construction | Pablo Halpern | 2016-06-23 | 2016-07 | P0209R1 | Library | Adopted 2016-06 |
P0217R3 | Proposed wording for structured bindings | Jens Maurer | 2016-06-24 | 2016-07 | P0217R2 | Evolution, Library Evolution | Adopted 2016-06 |
P0219R1 | Relative Paths for Filesystem | Beman Dawes | 2016-06-24 | 2016-07 | P0219R0 | Library, File System | Adopted 2016-06 |
P0221R2 | Proposed wording for default comparisons, revision 4 | Jens Maurer | 2016-06-23 | 2016-07 | P0221R1 | Evolution, Core | |
P0237R2 | Wording for fundamental bit manipulation utilities | Vincent Reverdy, Robert J. Brunner, Nathan Myers | 2016-07-11 | 2016-07 | P0237R1 | Library Evolution, SG14, Numerics | |
P0250R2 | Wording improvements for initialization and thread ids (CWG 2046, 1784) | Hans Boehm | 2016-07-10 | 2016-07 | P0250R1 | Concurrency, Core | |
P0254R2 | Integrating std::string_view and std::string | Marshall Clow | 2016-06-24 | 2016-07 | P0254R1 | Library Evolution | Adopted 2016-06 |
P0258R2 | has_unique_object_representations - wording | Michael Spencer | 2016-06-24 | 2016-07 | P0258R1 | Library | Adopted 2016-06 |
P0266R1 | Removing Restrictions on requires-Expressions | Walter E. Brown | 2016-07-10 | 2016-07 | P0266R0 | Core | |
P0267R2 | A Proposal to Add 2D Graphics Rendering and Display to C++, | Michael McLaughlin, Herb Sutter, Jason Zink | 2016-06-22 | 2016-07 | P0267R1 | Library Evolution | |
P0270R1 | Removing C dependencies from signal handler wording | Hans Boehm | 2016-07-10 | 2016-07 | P0270R0 | Library | |
P0283R2 | Standard and non-standard attributes | J. Daniel Garcia | 2016-06-22 | 2016-07 | P0283R1 | Core | Adopted 2016-06 |
P0292R2 | constexpr if: A slightly different syntax | Jens Maurer | 2016-06-20 | 2016-07 | P0292R1 | Core | Adopted 2016-06 |
P0296R2 | Forward progress guarantees: Base definitions | Torvald Riegel | 2016-06-21 | 2016-07 | P0296R1 | Core | Adopted 2016-06 |
P0298R1 | A byte type definition | Neil MacIntosh | 2016-07-10 | 2016-07 | P0298R0 | Library Evolution | |
P0299R1 | Forward progress guarantees for the Parallelism TS features | Torvald Riegel | 2016-06-24 | 2016-07 | P0299R0 | Library | Adopted 2016-06 |
P0302R1 | Removing Allocator Support in std::function (rev 1) | Jonathan Wakely | 2016-06-23 | 2016-07 | P0302R0 | Library | Adopted 2016-06 |
P0304R1 | C++ Standard Library Issues Resolved Directly In Oulu | Marshall Clow | 2016-06-24 | 2016-07 | P0304R0 | Library | Adopted 2016-06 |
P0305R1 | Selection statements with initializer | Thomas Koeppe | 2016-06-24 | 2016-07 | P0305R0 | Evolution, Core | Adopted 2016-06 |
P0307R2 | Making Optional Greater Equal Again | Tony Van Eerd | 2016-03-15 | 2016-07 | P0307R1 | Library Evolution, Library | Adopted 2016-06 |
P0314R0 | Querying the alignment of an object | Robert Haberlach | 2016-03-28 | 2016-07 | Evolution | ||
P0325R1 | Propose to adopt make_array into the IS | Zhihao Yuan | 2016-06-29 | 2016-07 | P0325R0 | Library | |
P0336R1 | Better Names for Parallel Execution Policies in C++17 | Pablo Halpern | 2016-06-23 | 2016-07 | P0336R0 | Concurrency, Library Evolution | Adopted 2016-06 |
P0346R1 | A <random> Nomenclature Tweak | Walter E. Brown | 2016-06-21 | 2016-07 | P0346R0 | Library | Adopted 2016-06 |
P0358R1 | Fixes for not_fn | Tomasz Kamiński | 2016-06-22 | 2016-07 | P0358R0 | Library Evolution | Adopted 2016-06 |
P0370R1 | Ranges TS Design Updates Omnibus | Casey Carter, Eric Niebler | 2016-07-05 | 2016-07 | P0370R0 | Library Evolution | |
P0371R1 | Temporarily discourage memory_order_consume | Hans Boehm | 2016-06-23 | 2016-07 | P0371R0 | Library, Core | Adopted 2016-06 |
P0380R1 | A Contract Design | G. Dos Reis, J. D. Garcia, J. Lakos, A. Meredith, N. Myers, B. Stroustrup | 2016-07-11 | 2016-07 | P0380R0 | Evolution | |
P0386R2 | Inline Variables | Hal Finkel, Richard Smith | 2016-06-24 | 2016-07 | P0386R1 | Adopted 2016-06 | |
P0387R0 | Memory Model Issues for Concurrent Data Structures | Hans Boehm | 2016-07-11 | 2016-07 | Concurrency | ||
P0388R0 | Permit conversions to arrays of unknown bound | Robert Haberlach | 2016-06-28 | 2016-07 | Evolution | ||
P0389R0 | template keyword in unqualified-ids | Robert Haberlach | 2016-06-28 | 2016-07 | Evolution | ||
P0390R0 | A Proposal to Add Pointer Cast Functions with Move Semantics to the Standard Library | Nickolas Pokhylets | 2016-06-04 | 2016-07 | Library Evolution, Library | ||
P0391R0 | Introducing the term "templated entity" | Jens Maurer | 2016-06-21 | 2016-07 | Core | Adopted 2016-06 | |
P0392R0 | Adapting string_view by filesystem paths | Nicolai Josuttis | 2016-06-23 | 2016-07 | Library | Adopted 2016-06 | |
P0393R3 | Making Variant Greater Equal | Tony Van Eerd | 2016-06-21 | 2016-07 | P0393R2 | Library | Adopted 2016-06 |
P0394R4 | Hotel Parallelifornia: terminate() for Parallel Algorithms Exception Handling | JF Bastien, Bryce Adelstein Lelbach | 2016-06-23 | 2016-07 | P0394R3 | Concurrency | Adopted 2016-06 |
P0396R0 | C++ Concepts Active Issues List (Snapshot of Revision 4) | Andrew Sutton | 2016-06-24 | 2016-07 | Core | Adopted 2016-06 | |
P0397R0 | C++ Standard Library Priority 1 Issues Resolved Directly In Oulu | Alisdair Meredith | 2016-06-24 | 2016-07 | Library | Adopted 2016-06 | |
P0398R0 | Core issue 1518: Explicit default constructors and copy-list-initialization | Jens Maurer | 2016-06-24 | 2016-07 | Core | Adopted 2016-06 | |
P0400R0 | Wording for Order of Evaluation of Function Arguments | William M. Miller | 2016-06-25 | 2016-07 | WG21 | ||
P0401R0 | Extensions to the Allocator interface | Jonathan Wakely | 2016-07-08 | 2016-07 | Library Evolution | ||
P0404R0 | Matching Types: 404 Syntax Not found | Hubert Tong, James Touton | 2016-07-11 | 2016-07 | Evolution | ||
P0405R0 | Wording for Networking TS changes from Kona | Jonathan Wakely | 2016-06-28 | 2016-07 | Library | ||
P0407R0 | Allocator-aware basic stringbuf | Peter Sommerlad | 2016-07-05 | 2016-07 | Library Evolution, Library | ||
P0408R0 | Efficient Access to basic stringbuf's Buffer | Peter Sommerlad | 2016-07-01 | 2016-07 | Library Evolution, Library | ||
P0409R0 | Allow lambda capture [=, this] | Thomas Koeppe | 2016-06-27 | 2016-07 | Evolution | ||
P0411R0 | Separating Library Requirements and Preconditions | Jonathan Wakely | 2016-07-07 | 2016-07 | Library Evolution, Library | ||
P0413R0 | Updating Parallel Execution Policy Names in the Parallelism TS | Pablo Halpern | 2016-07-07 | 2016-07 | Concurrency, Library Evolution | ||
P0414R0 | Merging shared_ptr changes from Library Fundamentals to C++17 | Jonathan Wakely | 2016-07-07 | 2016-07 | Library | ||
P0416R0 | Operator Dot (R3) | Bjarne Stroustrup, Gabriel Dos Reis | 2016-07-10 | 2016-07 | N4477 | Evolution, Core | |
P0417R0 | C++17 should refer to ISO/IEC 10646 2014 instead of 1994 | Beman Dawes | 2016-07-13 | 2016-07 | Core, Library |
By Bryce Adelstein Lelbach | Jul 15, 2016 12:38 PM | Tags: None
We have more CppCon 2016 program previews today! A selection of talks on concurrency, modules and finance, including talks by Hans Boehm, Anthony Williams and Richard Smith.
Program Preview: Concurrency, Modules, Finance
From the article:
Speaking for the first time in the US, Anthony Williams, the maintainer of Boost.Thread and the author of C++ Concurrency in Action will be joining us this year at CppCon! His talk, The Continuing Future of Concurrency in C++, will provide overview of the additions to the standard C++ concurrency libraries in the Technical Specifications for Concurrency and Parallelism and the C++14 and C++17 standards. ... [and much more]
By robwirving | Jul 15, 2016 09:05 AM | Tags: None
Episode 63 of CppCast the only podcast for C++ developers by C++ developers. In this episode Rob and Jason are joined by Alfred Bratterud, CEO of IncludeOS to discuss Microservice applications with the IncludeOS platform.
CppCast Episode 63: IncludeOS with Alfred Bratterud
by Rob Irving and Jason Turner
About the interviewee:
Alfred has been doing research towards IncludeOS since 2013, and got a PhD scholarship based on the early work in 2014. The IEEE CloudCom paper introducing the IncludeOS prototype was published in 2015 and he spun out a startup around IncludeOS in 2016, in collaboration with Oslo and Akershus university college (the largest institution for engineering education in Norway). He's currently focusing 100% on developing IncludeOS from research experiment to a production ready platform for cloud services.
Alfred holds BSc and MSc in computer science, with focus on logic and computability, from the university of Oslo. He has 10+ years of industrial programming experience, mostly in web services. He's been working at Oslo university college since 2011, teaching various subjects ranging from operating systems, sysadmin and firewalls to web development. He started learning C++ when he took over a C++ course at the college in 2011. A very good year to start C++.
By Adrien Hamelin | Jul 15, 2016 08:00 AM | Tags: community
Have you registered for CppCon 2016 in September? Don’t delay – Registration is open now.
While we wait for this year’s event, we’re featuring videos of some of the 100+ talks from CppCon 2015 for you to enjoy. Here is today’s feature:
Organizational Leadership with Modern C++
by Kevin Kostrzewa & Johm Wyman
Summary of the talk:
With the "C++ Renaissance" it is imperative that the technical leadership prove their mettle to lead a large organization into adopting modern practices and idioms.
In this talk, John and Kevin will discuss various techniques that they have employed to help drive their large development organization (~ 75 software engineers) towards a culture of modernization - some techniques that have worked well, and some that have not.
This will not be a discussion on specifics and nuances of the language. This is more a "fuzzy" discussion on what it means to be both at the forefront of the language and a leader / champion for your peers.
By Marco Arena | Jul 14, 2016 12:05 AM | Tags: visual studio
An interesting news for Visual C++ developers:
Bing Developer Assistant, now with C++ support
by Marian Luparu
From the article:
The Visual Studio extension Developer Assistant now offers contextually aware web powered solutions for C++...
Other quick links: How it works and Download it
By Adrien Hamelin | Jul 13, 2016 08:00 AM | Tags: performance advanced
Have you registered for CppCon 2016 in September? Don’t delay – Registration is open now.
While we wait for this year’s event, we’re featuring videos of some of the 100+ talks from CppCon 2015 for you to enjoy. Here is today’s feature:
completion T : Improving the future T with monads
by Travis Gockel
Summary of the talk:
std::future provides us a mechanism for asynchronous communication between a provider and receiver. However, the C++14 standard does not allow for actual asynchronous programming, as the only ways to interact with an std::future are blocking calls. The proposed then helps, but the interface is awkward and can be extremely slow when handling exceptions. Here, I will talk about completion a high-performance, async-only and monadic alternative to std::future and how it is used at SolidFire.
By Jason Turner | Jul 12, 2016 12:50 PM | Tags: efficiency c++14 basics
Episode 19 of C++ Weekly.
C++14 For The Commodore 64
by Jason Turner
About the show:
This week Jason demonstrates using modern C++ to write extremely efficient high level programs for the Commodore 64.
By Bryce Adelstein Lelbach | Jul 12, 2016 09:45 AM | Tags: None
<img alt="" data-cke-saved-src="http://cppcon.org/wp-content/uploads/2015/11/DanSaksbw-225x300.jpeg" src="http://cppcon.org/wp-content/uploads/2015/11/DanSaksbw-225x300.jpeg" 225px;="" height:="" 300px;="" float:="" left;"="" style="float: right;">
I'm very pleased to announce that Dan Saks will be one of the keynotes at CppCon 2016! Dan is one of the world's leading experts on the C and C++ programming languages and their use in developing embedded systems.
He is the president of Saks & Associates, which offers training and consulting in C, C++ and embedded programming. Dan has previously served as secretary of the ANSI and ISO C++ Standards committees and as a member of the ANSI C Standards committee.
Dan used to write the “Programming Pointers” column for embedded.com. He has also written for numerous publications including The C/C++ Users Journal, The C++ Report, The Journal of C Language Translation, Software Development, Embedded Systems Design and Dr. Dobb's Journal. With Thomas Plum, he wrote C++ Programming Guidelines, which won a 1992 Computer Language Magazine Productivity Award. He has presented at conferences such as Software Development and Embedded Systems. More recently, he contributed to the CERT Secure C Coding Standard and the CERT Secure C++ Coding Standard.
Dan's keynote, extern “C”: Talking to C Programmers About C++, will be about migrating C code (and C programmers) to modern C++:
Most of us have heard this story. We’ve even told it ourselves… C++ is nearly all of C, plus a whole lot more. Migrating code from C to C++ is pretty easy. Moreover, the migration itself can yield immediate benefits by exposing questionable type conversions that can be sources of latent bugs. After migration, the code performs as well in C++ as in the original C. And now that it’s C++, you have ready access to a wealth of advanced features you can (but don’t have to) use to implement enhancements. Who wouldn’t want that? Legions of C programmers, apparently. Despite the success of C++ in numerous application domains, C remains considerably more popular, especially in embedded, automotive, and aerospace applications. In many cases, projects resist C++ because their managers think the risks outweigh the benefits. In other cases, the resistance comes from programmers who persist in believing bad things about C++, even when those things aren’t true. What can the C++ community do to overcome this resistance? Drawing on lessons from cognitive science, linguistics and psychology, and (of course) computer science, this talk offers suggestions about how to make the case for C++ more persuasive to C programmers.
We've also got some CppCon program previews from three tracks today. The full program will be announced this Sunday. Here's some of our content on embedded programming:
We've also got a lot of great talks about the upcoming Coroutines TS:
And finally, some talks about accelerator and GPU programming:
Come join us at CppCon in Bellevue this September - registration is still open!
-- Bryce Adelstein Lelbach, CppCon Program Committee