Optional Lite Versions Save

optional lite - A C++17-like optional, a nullable object for C++98, C++11 and later in a single-file header-only library

v3.6.0

3 months ago

This release of optional lite contains the following changes:

Additions:

  • Add non-standard value_or_eval() (#67).
  • Add [[nodiscard]] to relational operators.
  • Add GitHub Actions CI and badge for it (nonstd-lite-project issue 55).

Changes:

  • Update actions/checkout in GitHub Actions to v4 (#78, thanks @striezel).
  • Update actions/checkout in GitHub Actions to v3 (#71, thanks @striezel).
  • Add/update example/CMakeLists.txt (nonstd-lite-project issue 56).
  • Remove gcc 8 and clang 8, 9, 10 from GitHub CI matrix (nonstd-lite-projet issue 69).
  • Add common CMake generated files to gitignore (#75, thanks @kacf).
  • Remove Travis CI configuration and badge (#73, thanks @striezel).
  • Remove msvc (windows-2016) image from GitHub Actions (nonstd-lite-project issue 61, thanks @xavier2k6).
  • Add msvc (windows-2022) image to GitHub Actions (nonstd-lite-project issue 62).
  • Do not cancel all jobs in a workflow if one fails. (#72, thanks @striezel, nonstd-lite-projet issue 71).
  • Use toplevel unit_name (nonstd-lite-project 56).
  • Update CMakeLists.txt for examples (nonstd-lite-project 56).
  • Change value used with *_CPP20_OR_GREATER to 202002L (nonstd-lite-project issue 49) Now, designate C++23 as speculative.
  • Prevent undefined _HAS_EXCEPTIONS warning with Clang (#68, thanks @redbaron).
  • Use ternary operator and C++11 constexpr.
  • Use optional_constexpr14 with value_or_eval() (#67).
  • Accommodate VS2013/MSVC12.0/1800 and earlier.
  • Update Readme guided by markdownlint.
  • In Readme, update test specification, add folding (#67).
  • In Readme, correct URLs for reference [10] Generic<Programming>: Discriminated Unions.
  • In Readme, add Daniela Engert's Boost20.optional to section Other implementations of optional.

Fixes:

  • Fix to use forwarding reference (thanks @matthew-wozniczka, fixes #74).
  • Fix some typos (#70, thanks @striezel).
  • Fix construction, emplace from const types (#69, thanks @atorstling).
  • Fix cmake config file to use @package_nspace@ (nonstd-lite issue 68).

v3.5.0

2 years ago

This release of optional lite contains the following changes:

Additions:

  • Add script tc-cl.bat (nonstd-lite-project issues 54).
  • Add macro optional_static_assert() and compile-time checks on T.
  • Add PlatformIO library manifest file library.json (replaces #64, thanks to @Nullfati).
  • Add export() to CMakeLists.txt enabling importing targets. See nonstd-lite-project issues 50.

Changes:

  • Enhance in-place construction (#66, thanks @@fekir).
  • Change to use #if defined(_MSC_VER) to avoid -Wundef warning (#65, thanks @eepp).
  • Change usage of =default with test structures to VS2015 for (#61).
  • Handle lest test framework as system include to prevent warnings.

Fixes:

  • Fix value_or() from changing stored value (issue #60, thanks @deadem, @mortenfyhn and @phprus).

v3.4.0

3 years ago

This release of optional lite fixes direct initialization of an optional with C++11 and later (issue #59. Thanks to @deadem).

v3.3.0

3 years ago

Release 3.3.0 of optional lite contains the following changes.

Additions:

  • Add tweak header support

Changes:

  • Add .editorconfig.
  • Add TortoiseGit integration with GitHub issues.
  • Add build folder and IDE folders/files to .gitignore (.vs, .vscode, CodeBlocks).
  • Change vcpkg install to use CMake
  • Change badge 'on conan' to refer to conan-center (thanks @jgsogo).
  • Improve section on Conan in Readme.
  • Remove no longer used struct enabler.
  • Special-case usage of ref qualifiers for GNUC 4.8 (#56,thanks to @davidtazy).
  • Update list of known good compilers (Xcode) (#54, thanks to @past-due).
  • Add settings options to conanfile (#46, thanks to @ngrodzitski).
  • Add Visual Studio 2019 to the Appveyor build matrix, nonstd lite project issue 47.
  • Add badge 'on godbolt', nonstd-lite-project issue 36.
  • Improve MSVC version table, nonstd-lite-project issue 38.

Fixes:

  • Handle presence of various C++11 type traits (#58, thanks to @trapexit)
  • Change requires() to use a default template argument (#55, #57, thanks to @improbablejan), see nonstd-lite-project issue 40
  • Fix optional_HAVE_INITIALIZER_LIST is undefined #51 (#52)
  • Fix compilation with exceptions disabled. (#47, #49, thanks to @viettrungluu)
  • Fix compilation of examples by adding CMakeLists.txt (#48, #50, thanks to @viettrungluu)

v3.2.0

5 years ago

[to be expanded]

This release of optional lite improves support for CMake and Conan and contains numerous other changes and fixes.

See also nonstd lite project Improve coherence between lite projects.

v3.1.1

5 years ago

This bug-fix release prevents a clash of a template parameter with macro I in header complex.h of GNUC 6 (#31, thanks to @gcarleo).

v3.1.0

5 years ago

To be written

  • optional_CPLUSPLUS
  • Add CMake installation target (inspired on PR #30)
  • Use other and value as parameter names; fix in-place type for make_optional()
  • Mention expected-lite
  • Make use of __has_include() more robust
  • Update shared in_place facility
  • Add CMake options to select between std::optional and nonstd::optional
  • Add -Wsign-onversion
  • Handle AppleClang C++17 compiler flag
  • Correct comment
  • Prevent -Wunused-function warning (inspired on PR #29)
  • Prevent -Wconversion message (inspired on PR #27)
  • Add -Wconversion warning
  • Rename to optional_REQUIRES_A() SFINAE on
  • .._A(): method argument type
  • .._T(): template argument type
  • .._R(): return type
  • Refine require clauses
  • Add converting construction, assignment (issue #27)
  • Add version to CMakeLists.txt
  • Add script to update version
  • Obviate need for -DNOMINMAX with MSVC (nonstd-lite issue 16)
  • Fix detection of GNUC, update style for if defined()
  • Expand Travis configuration
  • Update lest to version 1.33.2 (issue #26)
  • Change whitespace
  • Getting rid of conversion from ‘long unsigned int’ to ‘unsigned int' may change value-messages (#25)
  • Getting rid of conversion from ‘long unsigned int’ to ‘unsigned int' may change value-messages
  • Update optional.hpp
  • Make some rvalue qualified function to reuse lvalue versions of corresponding functions. (#21)Thanks @ngrodzitski
  • Let C++ standard be specified manually via optional_CPLUSPLUS, issue #20
  • Fix web links in section Notes and References
  • Fix to not require empty optional for emplace
  • Fix issue #18 (thanks to @rwst Ralf Stephan)
  • Add test for issue #18
  • Use CMAKE_CXX_STANDARD, remove c++03 target
  • Add "LANGUAGES CXX" to project
  • Declare stream operator before inclusion of lest test framework
  • Align CMake configuration (add_library)

v3.0.0

5 years ago

optional lite has been re-licensed under the Boost Software License (BSL) (issue #17).

Additions

  • Made v2.3.0 available in conan (thanks to @agauniyal).

Changes

  • Enabled differentiating between MSVC 14.0 (VS2015) and 14.1 (VS2017).
  • Expanded Travis and Appveyor configurations.
  • Renamed optional-lite to optional-main.
  • Suppressed -Wundef for optional.hpp.
  • Updated lest to version 1.33.1.

Fixes

  • Added missing using std::nullopt_t for C++17 std::optional
  • Corrected rhs to other (issue #12, thanks to @TartanLlama)

v2.3.0

6 years ago

This release of optional lite contains the following changes.

Changes

This release lets nonstd::optional use std::optional if it's available. Further in_place_type and in_place_index were added. The readme now has Conan installation instructions and badge (issue #9, thanks to @agauniyal) as well as a section Other implementations of optional.

Fixes

None.

v2.2.0

6 years ago

This release of optional lite contains the following changes.

Changes Relational operators now support mixed value types as specified in C++17 and are constexpr.

Fixes The struct/class mismatch for std::hash has been fixed (thanks to Łukasz A.J. Wrona @LAJW).