Pfr Versions Save

std::tuple like methods for user defined types without any macro or boilerplate code

2.2.0

5 months ago

Major changes:

  • Field names reflection. Added new constexpr boost::pfr::get_name<N, T>() function that returns a std::string_view with a name of field at index N of an aggregate T. Requires C++20. BOOST_PFR_CORE_NAME_ENABLED is defined to 1 if the functionality is available. Many thanks to Denis Mikhailov, Bela Schaum and X-Ryl669 for the PR PR#129 and implementation ideas.

  • for_each_field() is now constexpr for C++17. Many thanks to Alexander Karatarakis for the PR PR#134.

2.1.0

1 year ago

Major changes:

  • Implemented the boost::pfr::is_implicitly_reflectable and the machinery for specializing aggregates as reflectable or not, thanks to Denis Mikhailov for the #111.
  • Implemented boost::pfr::get by type of an element in the aggregate.
  • Implemented the BOOST_PFR_ENABLED macro to detect library support for reflection, thanks to Denis Mikhailov for the PR #86.
  • Workaround for broken C++17 stuctured binding in old compilers, thanks to Denis Mikhailov for the PR #119.

2.0.3

2 years ago
  • Added missing #include <memory> for inclusion of std::addressof
  • Fixed -Wzero-length-array warning when dealing with empty aggregates
  • Fixed compilation on msvc compilers <= 1920 (thanks to Alexey Romanov aka @alexey-romanov)
  • Added basic CMakeLists.txt support (thanks to @pdimov aka Peter Dimov)
  • Multiple improvements for docs, including links to https://github.com/apolukhin/pfr_non_boost
  • Added misc/strip_boost_namespace.sh script to remove boost:: and BOOST_ prefixes

2.0.2

2 years ago
  • A MurMur Hash based implementation of hash_combine() is now used to reduce collisions count and improve quality of boost::pfr::hash_value()
  • Visual Studio 2017 now supported in C++14 mode (thanks to Denis Mikhailov aka @denzor200)
  • Issues found by inspect tool were fixed
  • Fixed some warnings, including removal of extra semicolons in include/boost/pfr/detail/fields_count.hpp (fixes #72)
  • Added a compile time assert for inherited types (thanks to Denis Mikhailov aka @denzor200)
  • Reflection of aggregates with non movable fields is now possible if guaranteed copy elision is on
  • Fixed spelling issues

2.0.1

3 years ago
  • Comparison functions are now constexpr
  • Aggregates with members that have lost const qualifiers on SFINAE in constructor (like std::optional<std::chrono::duration<A,B>> from libc++) now could be reflected again
  • Multiple typos fixed

2.0.0

3 years ago

First Boost release of the library. Significant changes since version 1.0.x:

  • Removed the Flat reflection
  • Removed global_ops.hpp
  • boost::pfr::ops::operator* were changed to functions and moved to boost::pfr:: namespace
  • Big rewrite of docs
  • Better testing and improved diagnostics
  • Helper script now works with Python2 and Python3

1.0.4

3 years ago
  • Better diagnostics for 'too many fields in a structure' error
  • Included missing includes
  • Significant docs update

1.0.3

3 years ago
  • More assertions
  • Cleanups: fix comments, remove copy-paste, fix warnings in tests

1.0.2

3 years ago
  • Fixed "type without linkage" compile time error
  • Fixed a bunch of Clang warnings

1.0.1

3 years ago
  • Better diagnostics with better compile times
  • Fixed std::is_pod deprecation warnings
  • CI now also test on GCC-10 and Clang-10