Issaquah Trip Report, day nine

day −1
day 0
days 1 and 2
day 3
general remarks about the meetings
days 4 to 6
days 7 and 8

2023-02-11 08:30-8:00:

Today begins my trip home, but that won’t start until this afternoon.  This morning is the final half day of the C++ standards committee, a plenary session where we take formal votes and wrap things up.

I lost a pair of glasses somewhere yesterday.  I was hoping that somebody would find them and turn them in, either to the front desk at the hotel or to one of the folks in charge of the meeting…no such luck.  Fortunately, what I lost are my “computer glasses” with the same prescription as the near prescription on my bifocals; and I can see my computer screen just fine as long as I’m only about a cubit from it.  I think I need to get some new glasses anyway because my eyes seem to be getting worse.

Well, that was fast.  We finished our work and took the 32 formal votes in just an hour and a half.

The next two meetings will be in June in Varna, Bulgaria, and in Kona, HI, USA in November.  I’ll take Amtrak to the east and west coasts, respectively, and fly from there.

We have 2024 meetings tentatively scheduled for Japan, Sweden and Poland.  I’ll probably participate in the Japan meeting via Zoom since I refuse to sit in an airplane long enough to get there in person.

The hotel had no way to call me a taxi, but the very nice woman at the front desk called an Uber using her app; and I paid her the cash.  I have a cell phone, but I don’t have any special apps on it.  I guess this old dude needs to get with the program.


After checking one bag to Chicago at the train station, I went to a restaurant in the Embassy Suites and had the Reuben sandwich.  It was edible, but I could detect no 1000 island dressing.  I guess the cook layed on hands and intoned “1000 island”.


King Street Station has no place to sit at a table and work on a laptop; but on the third floor is some kind of arts and education council office, or something, which has a couple of such places; so here I sit, one of three folks doing a bit of writing.

Train 8 started boarding about 16:40 or so and departed on time.  I’m in room D this time, so the electrical outlet is near the window where I’ll be plugging in my power strip.  I’m riding backwards this time, but that doesn’t bother me, and I’m on the fireman’s side eastbound so I won’t have the sun in my eyes going through big sky country.

Like the westbound trip on train 7, this train has only one coach.  The TA said that it’s OK during the light travel season, but they’ll really need a second coach, and probably a second revenue sleeper, before long.

We were out of Wenatchee only about fifteen minutes late.  It turns out that Wenatchee is a crew change point for the engineers, but not for the conductors.  Normally, engineers and conductors work, not particular trains, but particular sections of track.  Why only the engineers change in Wenatchee I have no clue.

We have about a two hour dwell time in Minot, which I’ll talk more about tomorrow.  For now, I’ll try to use this time to post the report for day 9.  It might not be proofread as well as it should have been.

Issaquah Trip Report, days seven and eight

general remarks about the meetings
days 4 to 6


I didn’t get a good night’s sleep last night and felt pretty wiped out most of the day.  I spent a little time in the Evolution Working Group (EWG), the subgroup that considers changes to the core language.  All I remember is something called a “pipeline operator” which would inject arguments into following function calls.  I couldn’t figure out what it was good for or why anyone would want it.

Mostly I rested up for an evening session of the numerics study group where we continued the discussion of floating point rounding that slopped over from the evening session on Tuesday.  It turns out that there are quite a few cases where the behavior is not at all intuitive.

The last thing on the agenda was a paper of mine.  About a decade ago or so, I had in mind a database access library in C++ that would be the rough moral equivalent of the java.sql.stuff; but I soon had some medical issues and couldn’t pursue it, and so nothing ever came of it.

One thing I needed, and implemented, was a C++ type that could give me a round trip to and from SQL’s NUMERIC and DECIMAL types which are fixed point decimals.  A few years ago, the numerics folks were thinking about publishing a numbers TS.  The rational number in §7 of that paper was my work; and I thought that my “big decimal” type was a kind of number, too, and so maybe a more generally useful version of it (written against C++23, has NaNs and infinities, etc.) could also go into the TS.  It turns out that there’s not much interest in that any more, so I won’t be pursuing that any further.  I think that was the right decision since my target audience is good old “business data processing” which isn’t really the market for C++.


I spent today in EWG where it was “safety Friday”.  We spent the morning talking about various ways to mitigate the problem of uninitialized local variables on a function’s call stack.  There seems to be consensus for the rule that local variables without explicit initializers should be zero-initialized (like globals are), but it turns out that there are corner cases where that could change the meaning of some code, and static analysis tools would no longer be able to flag the potential bug.  We’ll need to think about this some more.

Just before lunch, we took the customary group photo.  As I write this, it’s not online yet; but I’ll embed it when it is.  I’ll be which is the bottom picture among these three.  I’m the old fart on the right of the first row who’s sitting on his walker wearing a St. Louis Cardinals baseball cap and an N95 mask (because COVID isn’t over yet).

After lunch, we talked about “type and resource safety”.  From the paper by Bjarne Stroustrup:

  • every object is accessed according to the type with which it was defined
  • every object is properly constructed and destroyed
  • every pointer either points to a valid object or is the nullptr
  • every reference through a pointer is not through the nullptr
  • every access through a subscripted pointer is in-range

Those are informal rules that C++ coders have always been expected to follow, but it’s not really possible for static analysis tools to enforce them completely.  There seems to be a strong consensus for some kind of framework that would improve the situation.

Tomorrow morning will be a plenary session where we take formal votes.  That should end by noon, probably before; and then I’ll be on my way back to King Street Station where I’ll board Amtrak’s Empire Builder for the first leg home.

Issaquah Trip Report, days four to six

general remarks about the meetings

First, a caveat emptor:  the Hilton Garden Inn in Issaquah, Washington lacks a proper restaurant.  Instead, they have a bar that has limited menus for breakfast and supper…no lunch at all.  Also, they don’t send out laundry or dry cleaning, so I’ll be a mess on my trip home (not dirty or smelly, but definitely unpressed).

The plenary session where we took care of administrivia only lasted until the morning break.

For the rest of the day, I hung out in the Library Evolution Working Group (LEWG) where we dealt with eleven papers.  Four answered national body comments, one fixed a bug (for which there was no NB comment), and one answered a comment from the Core (language) Working Group (CWG).  That completed our high priority business, so the other five papers were suggestions for new standard library features.  We’ll be talking mostly about new features for the rest of the week since that’s what LEWG is about anyway.

This old dude was happy to catch up on his sleep and write the blog post I linked to above.  I’m pretty sure that nobody on the committee missed me. 😎

The hotel doesn’t have all the meeting rooms that we need, so some groups have evening sessions.  I attended an evening session of the Numerics Study Group where we considered three papers, one suggesting additional statistics functions, one about an extension to the random number business, and one claiming that more math functions could be declared constexpr (“constant expression”).  There was a fourth paper that dealt with deprecating and replacing the fsetround and fgetround functions in the floating point environment that C++ inherits from C.  We got through the rationale for deprecating the functions, but we ran out of time before we could talk about what to replace them with.  We’ll have another evening session on Thursday when, if we have the time, we might also talk about my paper.  (The floating point stuff is very much more important.)

LEWG spent the whole day talking about SIMD stuff (“single instruction, multiple data”).

The committee can publish three kinds of documents, an international standard (IS), a technical specification (TS) which is a kind of warning about possible future standardization (“Hey, vendors and users, try this out and let us know if we made any mistakes.”), and a technical report (TR) which is basically “Here’s something we thought you might find interesting.”

We have a TS that defines a class called simd that provides a mechanism for doing parallel processing of vectorizable data on multicore machines, which is a Really Big Deal for the numerics folks.  As expected, “mistakes were made;” and fixing them has lots of subtle ramifications.  This took lots of discussion among numerics experts, most of which went over my head.  (One of the reasons that I participate in the committee is that I can learn lots of stuff just by keeping my mouth shut and my ears open.  I hope I never stop learning.)

Issaquah Trip Report, the reason for the trip

Here begins the part of my trip report that talks about the reason for the trip.  I’ll probably combine several days into single posts since I might not have much to say that would be of interest to a general audience.

This week I’m attending meetings of ISO/IEC JTC1 SC22 WG21 and INCITS/C++, the standards committees for the C++ programming language.  (It’s not a joint meeting, but the two committees meet at the same place at the same time.  Ask the lawyers, I don’t understand it.)

I’ll begin by briefly describing how these meetings work, and then “below the fold” I’ll have a bunch of geeky info for folks who really like organizational charts (although I won’t have any actual charts).

We meet in full committee three times per year, although it was pretty much all Zoom during COVID.  The first post-COVID face-to-face meeting was in November in Kailua-Kona, Hawaii (which I missed).  This week we’re meeting in Issaquah, Washington, a suburb of Seattle.  The summer meeting will be in June in Varna, Bulgaria.

We meet for five and a half days.  Monday morning is a plenary session where we handle a bunch of administrivia (approve the agenda, approve the previous meeting’s minutes, stuff like that).  After lunch, we break into subgroups where most of the actual work gets done.  Saturday morning is another plenary session where we take formal votes.  By the time we get to Saturday, everything is pretty much a done deal; and with the odd exception here and there, all motions pass by unanimous consent.

A couple hundred people from around the world show up at the meetings, and we’d never get anything done if we tried to do the real work in plenary sessions.  Also, nobody knows everything, so we tend to gravitate to smaller groups where we might have some useful input.  I, for example, will probably participate mostly in the Library Evolution Working Group which considers changes to the standard library.

We’ve adopted a very aggressive schedule of publishing a new version of the C++ standard every three years; and since C++11, we’ve published C++14, C++17 and C++20.  Our main focus this week will be answering national body comments that were part of the result of the C++23 final committee draft (FCD) ballot.  We hope to instruct the WG21 convenor (the person in charge, kind of like a chair) to send the draft international standard (DIS) out for ballot on Saturday.  We’ll know the results of that ballot in a few months, at which time we might have more national body comments to answer, or the document might go straight to being published as an international standard (IS).  We’ll see…

OK, now for the boring organizational stuff:

[Read more…]