implement optional similarly to the one propoed in C++14 draft N3690

This is an alternative to !268 (closed) based on the implementation of @martin.nolte.

Merge request reports

Loading