Show me your code!

I’d like to run a little experiment.

Let’s build a wall of examples of std::optional !

Intro

In the last three articles of my C++17 STL series I’ve been discussing how to use std::optional . I can talk and talk… or write and write… but I’m wondering how do you use this wrapper type?

That’s why I prepared a little experiment and a giveaway:

The rules

It’s all about you (short) examples of std::optional

Later, I plan to compose a new blog post with all of the submissions.

Send me a link to gist/coliru/compiler explorer… etc - with a short example of std::optional .

You can add a link in the comments below or send me an email

bartlomiej DOT filipek AT bfilipek DOT com Please mention if you allow showing your Name next to the example This submission is one-time only so that I won’t add you to my email list automatically. However, if you’d like to stay updated about the results and future posts, then please subscribe.

. Ideally the max number of lines is 25 (not taking into account main() or the caller’s code).

Feel free to submit the code if it’s longer, we’ll think how to make it more compact.

or the caller’s code). Add description what the code does .

. The code should represent some “real-life” use.

The code cannot, of course, violate any copyright rules.

I’ll select most useful examples and compose a single post about optional examples

You can submit only one code sample.

Usually std::optional is used in:

To return something from a function

As an optional input parameter to a function

As an optional class member

To perform some lazy loading/two-phase init of some object

So probably your code will be one of those three above variations... but of course you might came up with something different.

Dates:

It starts now! (28th May)

Ends 7th June (8:00 am GMT+2 Time, Poland) (so I can prepare a post that will be published on 11th June)

For a start here’s a Coliru link with some basic sample:

Coliru sample std::optional code

For example this my source code that I’ve shared in some previous posts:

struct SelectionData { bool anyCivilUnits { false }; bool anyCombatUnits { false }; int numAnimating { 0 }; }; std :: optional < SelectionData > CheckSelection ( const ObjSelection & objList ) { if (! objList . IsValid ()) return { }; SelectionData out ; // scan... return { out }; }

The gift

I have 2 x 25$ Amazon.com Gift Card.

I’ll pick two random winners from all the submissions.

Note: It’s an US gift card, so you’ll be able to use it on Amazon.com only.

The Series

This article is part of my series about C++17 Library Utilities. Here’s the list of the other topics that I’ll cover:

Resources about C++17 STL:

I’m waiting for your code!