CppCast Episode 51: Meeting C++ with Jens Weller

Episode 51 of CppCast the only podcast for C++ developers by C++ developers. In this episode Rob and Jason are joined by Jens Weller to discuss the MeetingC++ conference and user group community.

CppCast Episode 51: Meeting C++ with Jens Weller

by Rob Irving and Jason Turner

About the interviewee:

Jens Weller is the organizer and founder of Meeting C++. Doing C++ since 1998, he is an active member of the C++ Community. From being a moderator at c-plusplus.de and organizer of his own C++ User Group since 2011 in Düsseldorf, his roots are in the C++ Community. Today his main work is running the Meeting C++ Platform (conference, website, social media and recruiting). His main role has become being a C++ evangelist, as this he speaks and travels to other conferences and user groups around the world.

PO3OOrO: Enhancing the C++ Basic Character Set with Standard Character Mappings -- Douglas et al.

A new WG21 paper is available. If you are not a committee member, please use the comments section below or the std-proposals forum for public discussion.

Document number: PO3OOrO

Date: 2016-04-01

Enhancing the C++ Basic Character Set with Standard Character Mappings

by Robert Douglas, Faisal Vali, Nate Wilson, Nevin Liber

Excerpt:

Languages evolve, as the means by which people best express their ideas. As this is the
domain of programming languages, it is up to us to make sure that C++ evolves in conjunction
with how people can best communicate their intents to machines and co-workers. Current
language has begun a transition to new forms of language.

The world is additionally becoming far more social. In this new world, a competitive language
must be ready to embrace modern social forums with better support for the social paradigms of
the day. Unfortunately, C++ has a rather heavy syntax for expressing ideas. This is less of a
problem when armed with a keyboard and large monitors, but most devices these days are
smaller with shrinking keyboards, if any physical keyboard at all. This problem must be
mitigated, if C++ is to be an appealing language with the newest generation of developers.

PO4116r0: Completing support for emotive programming in C++ -- Pablo Halpern

A new WG21 paper is available. If you are not a committee member, please use the comments section below or the std-proposals forum for public discussion.

Document number: PO4116r0

Date: 2016-04-01

Completing support for emotive programming in C++

by Pablo Halpern

Excerpt:

There can be no doubt that C++ is an unusually expressive language. A significant part of that expressiveness comes from the ability to use emoticons, not just in comments and string literals, but in the code itself. For example the following (do-nothing) program compiles, links, and runs in all versions of C++: ...

P3141: std::terminates()

A new WG21 paper is available.

Document number: P3141

Date: 2016-04-01

std::terminates()

by Hal T. Ng, Professor, C.S., LLVM.edu

Excerpt:

In 2014, the C++ committee tackled the problem of C++98's subtly hard-to-use std::uncaught_exception(), which was intended to return whether there were unhandled exceptions but did not work as intended in all destructor cases. The committee successfully addressed the problem by providing the improved std::uncaught_exceptions() (note plural "s"), which returns the number of unhandled exceptions in the current thread, and this function can now be used to reliably implement scope_guard and similar patterns in portable code.

Continuing in the same vein, this paper proposes to address C++98's related and sometimes-problematic std::terminate(). As its name suggests, the function causes abrupt program halts, which can cause data corruption if operations in flight are not completed gracefully. The set_terminate_handler() facility only partly addresses this problem by allowing a last-ditch handler to be invoked after unstoppable termination has already begun.

Along the same lines as conditional noexcept (noexcept(cond)), we propose a way for a sensitive operation, or a whole program, to determine in advance whether termination is possible. A program can test this by calling:

namespace std {
    bool terminates();
}

which returns true if and only if the program can subsequently terminate.

Because this function cannot fail to determine a valid result, it should be noexcept. Further, anticipating its usefulness in constant expressions and following LWG’s guidance for using constexpr wherever possible throughout the standard library, we propose in full:

namespace std {
    constexpr bool terminates() noexcept;
} 

Implementation notes: This function is so simple to specify that we foresee no implementation difficulty in any of the major C++ compilers.

Note that this is not the same as the halting problem, which would be to return true if and only if the program will halt, and which is known to take several hours to compute for programs longer than a few tens of millions of lines. Rather, this function is carefully constructed to return true if and only if the program could terminate, which is fundamentally different and well understood problem.

Acknowledgments: This paper expands on the core idea that was first proposed in committee hallway discussion by P.J. Plauger.

C++ Core Guidelines Checkers: Preview of the Lifetime Safety checker--Andrew Pardoe

The Visual C++ Team announces a preview of the Lifetime Safety checker for CppCoreCheck:

C++ Core Guidelines Checkers: Preview of the Lifetime Safety checker

From the article:

Lifetime safety is ensuring that the lifetime of any object matches its use. That is, don’t leak objects by forgetting to delete them in the case that they were allocated on the heap, and don’t access objects...

C++ sessions at JAX Finance

The JAX Finance conference is to be held in London in April.

The Conference for Technology in Finance

About the conference:

JAX Finance is a three-day conference for software experts focusing on the specific technological needs of the financial industry.

This year the conference includes a number of sessions on C++ (in addition to the existing focus on Java.)

Dates: 27 - 29 Apr

Venue: Park Plaza Victoria, London

 

GoingNative 48: ISO C++ @Jacksonville Debriefing -- Gabriel Ha

goingnative48.PNGJust posted on C9:

GoingNative 48: ISO C++ @Jacksonville Debriefing

by Gabriel Ha

From the post:

We're back with another round of updates from the most recent ISO C++ standards meeting at Jacksonville, where some..."interesting" turns of events took place.

Timeline
[0:30] Interview portion begins
[1:35] The Jacksonville Controversy
    [3:07] Why should I care about TS's?
[5:55] New TS's
    [6:00] Modules (Try it out [VS] | Learn more | Send feedback)
    [6:27] Coroutines (Try it out [VS] | Learn more | Send feedback)       
    [7:59] Concepts (Try it out [GCC] [6.0 changes] | Send feedback)
    [10:11] Ranges (Try it out [GCC] [6.0 changes] | Send feedback)
[11:33] Direct-into-Standard items
    [11:40] constexpr v3
    [12:16] New attributes (fallthrough, nodiscard, maybe_unused)
    [14:24] Extended aggregating initializers
    [15:34] Sentinel iterators
    [16:14] Hex floats
[16:27] TS-into-Standard items
    [16:38] Parallelism TS (Learn more)
    [17:30] Library fundamentals v1 TS (Try it out [Boost] [GCC] [6.0 changes])
    [19:19] File system TS
    [20:01] "Special" math IS [International Standard] (Try it out [Boost] [GCC] [6.0 changes])
[22:21] What's next for the committee?
    [22:27] And how exactly does one pronounce "Oulu?"

[23:01] Call to action: Get involved with the committee, try out the TS's!
    Download the latest versions of GCC [6.0]Boost [1.60], and/or Visual Studio [2015 Update 2 RC]