News

CppCast Episode 52: Macchina.io with Günter Obiltschnig

Episode 52 of CppCast the only podcast for C++ developers by C++ developers. In this episode Rob and Jason are joined by Günter Obiltschnig to discuss the macchina.io library for IoT C++ development.

CppCast Episode 52: Macchina.io with Günter Obiltschnig

by Rob Irving and Jason Turner

About the interviewee:

Günter is the founder of the POCO C++ Libraries and macchina.io open source projects. He has been programming computers since age 12. In his career he has programmed everything from 8-bit home computers (C64, MSX) to IBM big iron systems (COBOL and JCL, VM/CMS and CICS), various Unix systems, OpenVMS, Windows NT in its various incarnations, the Mac (classic Mac OS and OS X), to embedded devices and iPhone/iPad. He has a diploma (MSc. equivalent) in Computer Science from the University of Linz, Austria.

His current main interests are embedded systems, cross-platform C++ development, JavaScript and, foremost, the Internet of Things. When not working, he spends time with his family or enjoys one of his hobbies — sailing, running, swimming, skiing, listening to or making music, and reading.

CppCon opens Call for Submissions

CppCon has announced its call for submission for 2016. 

CppCon: The C++ Conference

Call for Submission

From the announcement:

The deadline for submissions is May 22nd and the conference face gathering for the entire C++ community. The conference is organized by the C++ community for the community and so we invite you to present.

 

Using C++ Coroutines to simplify async UWP code--Eric Mittelette

The async pattern needed to write UWP apps (or simply "Universal apps") is not so easy to grasp, especially in C++. Eric from the Visual C++ team explains how the experimental Coroutines feature available in Visual Studio 2015 helps simplify async UWP code:

Using C++ Coroutines to simplify async UWP code

From the article:

C++ Coroutines can simplify your async code, and make the code easy to understand, write, and maintain...

C++ Weekly Episode 5: Intro To ChaiScript

Episode 5 of C++ Weekly with Jason Turner.  

Intro To ChaiScript

by Jason Turner

About the show:

In this episode Jason shows some basic getting started with ChaiScript code and goes over some of the more interesting features of the language.

C++Now 2016 Program Highlights: C++17

The C++ Now 2016 conference has a number of highlights this year.

C++ Now 2016 Hightlights

From the program:

C++17 is almost here and C++Now 2016 is offering sessions focused on specific C++17 features. Hear David Sankel on Variants, Nathan Myers on contracts support, and Alisdair Meredith on implementing tuple in C++17.

 

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.