News

Call for Papers for Meeting C++ 2014

Finally I can announce the date and place for Meeting C++ 2014:
We will meet this year in Berlin at the Andels Hotel on the 5th and 6th December!

With the announcement also the call for papers has started, until April 20th you can send in your talks for the conference. This years theme track is "Scientific Programming with C++", I hope to have again a lot of diverse talks about C++ at the conference!

Range Concepts, Part 2 of 4: Infinite Ranges

The second part of Eric Nieblers Series about ranges:

Range Concepts, Part 2 of 4: Infinite Ranges

By Eric Niebler

From the Article:

In the last post, I tried to make delimited ranges fit into the STL and found the result unsatisfying. This time around I’ll be trying the same thing with infinite ranges and will sadly be reaching the same conclusion. But the exercise will point the way toward an uber-Range concept that will subsume delimited ranges, infinite ranges, and STL-ish pair-o’-iterator ranges.

Trip report: Winter ISO C++ meeting

The winter 2014 WG21 (ISO C++) meeting was held in Issaquah, WA, USA on February 10-15. Many thanks to Microsoft for hosting us!

The major work of this meeting was to complete processing of the national body comments received in last summer’s comment ballot for the upcoming C++14 standard. We also began comment processing for the recent corresponding ballot for the File System Technical Specification (TS).

Below are some highlights from this week’s meeting.

C++14: We’re done! (we think)

Some history for perspective:

  • In November 1997, the ISO C++ committee unanimously approved the final text of the first C++ standard. After final ISO balloting, this was published as C++98.
  • In March 2011, we unanimously approved the final text of the second C++ standard, balloted and published later that year as C++11.

On Saturday, we unanimously approved what we believe will be the final text of the third C++ standard, which we expect to become C++14 later this year. This is a huge milestone for C++! And compiler vendors are already scrambling over each other to be the first to ship a fully conforming C++14 implementation -- possibly while the final C++14 ballot is still in progress, which has never happened before.

Note: The upcoming five-month DIS (Draft International Standard) ballot is expected to be the final ISO ballot for C++14. If there are any national objections to the DIS, then there will be one additional FDIS (Final Draft International Standard) ballot stage at the end of this year. However, the national bodies tell me that, barring last-minute surprises, they will likely agree on the DIS contents we just approved on Saturday; in that case the FDIS step will not be required and we would be able to proceed directly to publication later this summer.

For those interested, here are the main (albeit small) changes approved this week as the final set of tweaks for C++14:

I want to say a hearty THANK YOU AGAIN to everyone who has worked so hard, not only on completing C++14, but on bringing it in at such high quality. We had very clean CD ballot with a far lower number of change/bugfix requests than the C++0x/11 ballots, and it’s probably fair to say that today our C++ working paper is in better shape than ever.

Thank you again to everyone on the committee, those who participated via national bodies, and those who gave great feedback and help via the std-discussion and std-proposals groups, for making this possible! This is a really outstanding achievement.

But that’s not all, because we also made progress on other fronts as well...

TS Progress: A lot more is happening

In addition to completing (we hope) C++14, we also made progress on all seven of the TS projects, and approved the creation of one more. Here’s a quick overview of what we accomplished last week, and some notes about what to expect possibly at our next meeting this June in sunny Rapperswil, Switzerland.

The File System TS (GitHub) worked through most of its ballot comments and is expected to complete its ballot resolution in Rapperswil, where we expect to complete the TS and approve sending it out for its final DTS ballot.

The Networking TS material we have so far was approved to instead be added directly to the Library Fundamentals TS (see N3783 below).

The Library Fundamentals TS (GitHub) had a number of additions and is expected to be in shape for its PDTS ballot after Rapperswil. Here is a quick look at what was added to Fundamentals -- follow the links for the details of each paper:

The Array TS working paper was approved, and though we didn’t vote anything more into it at this meeting, LEWG considered additional material that is in good shape to be expected to be added to the Array TS in Rapperswil, including multidimensional array_view and indexes.

The Concepts, Parallelism, and Concurrency TSes had content approved to be turned into initial working papers. Between meetings, the project editors will work on producing formal working papers, which we will consider adopting as TS working papers at the beginning of our next meeting in Rapperswil. One or two of those might even be approved for PDTS ballot following Rapperswil! The initial TS contents are:

Finally, we decided to further expand our workload: We approved asking for a Transactional Memory TS New Work Item (New Project ballot) based on N3919, “Transactional Memory Support for C++.” In Rapperswil we hope to have a paper with wording that we can consider approving to turn into an initial working paper between Rapperswil (June) and Urbana-Champaign (November).

Conclusion

WG21 has now shipped out documents for ballot in the last three consecutive ISO C++ meetings, and the plan is for this to continue. We have been filling up our pipeline, and now we're seeing work come out the other end at a brisk pace.

After the long and "working relatively invisibly" period of C++0x, it's very interesting to see ISO C++ now in a mode where "shipping something out for ISO ballot" is becoming the normal outcome of every meeting. Thanks again to all the volunteers who make it possible! And stay tuned for more to come throughout this year...

Range Concepts, Part 1 of 4: Delimited Ranges

The start on a series about ranges from Eric Niebler:

Range Concepts, Part 1 of 4: Delimited Ranges

By Eric Niebler

From the Article:

I’ve been digging into ranges recently, and I’m finding them to be more than just a pair of iterators. In a series of posts, I’ll be expanding the notion of what a range is to cover some kinds of ranges not easily or efficiently expressible within the STL today: delimited ranges and infinite ranges. This post deals with the problems of representing delimited ranges with STL iterators.

NT² 3.0 and Boost.SIMD -- Stable release

TThe first stable release of the 3.x series of MetaScale’s open-source software is available: NT² 3.0. It also includes its spin-off project, Boost.SIMD (not yet a Boost library). Many Issues have been closed since last beta. The main focus of this release cycle was to fix performances issues and to stabilize some parts of the API.

NT² 3.0 Release Announcement

Source and binary packages can be downloaded here

Full changelog is available here

Find the Bug -- Andrzej Krzemieński

Can you spot the bug?

Find the Bug

by Andrzej Krzemieński

From the article:

Today, let's take a short test. Find what is likely to be a bug in the following code and suggest how to fix it.

void Catalogue::populate(vector<string> const& names)
{
  vec_.clear();
  vec_.resize(names.size());

  for (size_t i = 0; i < names.size(); ++i)
    vec_[i] = make_unique<Entry>(names[i]);
}

C++ Papers for Issaquah - Library, Graphics, Networking, Numerics and Undefined Behavior

This is the last part in the series for Issaquah, and its the most diverse:

C++ Papers for Issaquah - Library, Graphics, Networking, Numerics & Undefined Behavior

by Jens Weller

From the Article:

The 4th and last part about the C++ Papers for Issaquah. I already covered the first batch of proposals from the Library subgroup in the previous part, now its all about papers from Library, Graphics, Networking, Numerics and Undefined Behavior. A very diverse part.

C++ Papers for Issaquah - Library I

The third part of my series about the papers for Issaquah is about the first batch of library proposals

C++ Papers for Issaquah - Library I

by Jens Weller

From the article:

The 3rd part of the C++ papers for Issaquah series will be about the library proposals. The last part covered the papers from concepts, database and evolution. There are a lot of proposals from the library group, and I think some of them are the most interesting, as they don't have any impact on the core language.

C++ Now 2014 sold out in under a month

cppnow14-soldout.pngAs interest in C++ keeps rising, there are more C++ events but they are also selling out faster. C++ Now 2013, Going Native 2013, and C++ and Beyond 2013 all sold out, some six months before the event.

Now C++ Now 2014 has sold out faster than last year -- this time it sold out in less than a month since registration opened, with over three months left to go.

The good news: You can still register to get on the waiting list, and if you act now there's a good chance you can still get a seat. Each year there will be some number of cancellations, and the organizers expect to be able to take a number of people on the waiting list.

If you have not yet registered for C++ Now 2014 but are interested in potentially going, even if you're not certain yet you should join the waiting list today to get in the queue for a chance to sign up for the last few seats that will open up!

 

If you missed registering for C++ Now and don't make the waiting list, don't despair -- there will be additional major C++ events around the world later this year. Watch for upcoming announcements here on isocpp.org. Stay tuned...

Quick Q: What's the difference between std::merge and std::inplace_merge? -- StackOverflow

Quick A: "Inplace" can deal with overlapping ranges, but will take either more space or more time.

Today on StackOverflow:

Difference between std::merge and std::inplace_merge?

What is the difference between std::merge and std::inplace_merge in terms of complexity and result when it is executed on two consecutive ranges with elements that are all different ? (I am not a native english speaker and I am not sure to clearly understand what "inplace" means)