diff --git a/README.md b/README.md index a7cbbd9..78f1e98 100644 --- a/README.md +++ b/README.md @@ -11,35 +11,40 @@ This C++14 library is meant for accessing structure elements by index and provid ### Motivating example ```c++ #include -#include "magic_get.hpp" +#include "boost/pfr.hpp" -struct my_struct { +struct my_struct { // no ostream operator defined! int i; char c; double d; }; int main() { - my_struct s{100, 'H', 3.141593 }; - std::cout << "my_struct has " << flat_tuple_size::value << " fields: " - << "{ " << flat_get<0>(s) << ", " << flat_get<1>(s)<< ", " << flat_get<2>(s) << " }\n"; + using namespace boost::pfr::flat_ops; // for ostream operator out-of-the-box for all PODs! + + my_struct s{100, 'H', 3.141593}; + std::cout << "my_struct has " << boost::pfr::flat_tuple_size::value + << " fields: " << s << "\n"; } + ``` Outputs: ``` -my_struct has 3 fields: { 100, H, 3.14159 } +my_struct has 3 fields: {100, H, 3.14159} ``` ### Requirements and Limitations * C++14 compatible compiler (GCC-5.0+, Clang, ...) +* Static variables are ignored + +C++14 limitations (C++17 fixes those): * T must be POD and must not contain references nor bitfields * T must not contain pointers to user defined types * Enums will be returned as their underlying type -* Static variables are ignored ### License diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 16598f1..c76a8c4 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -21,6 +21,7 @@ test-suite pfr [ compile-fail non_aggregate1.cpp ] [ compile-fail non_aggregate2.cpp ] [ compile-fail bitfields.cpp ] + [ run motivating_example.cpp ] [ run ../example/examples.cpp ] ; diff --git a/test/motivating_example.cpp b/test/motivating_example.cpp new file mode 100644 index 0000000..54e8066 --- /dev/null +++ b/test/motivating_example.cpp @@ -0,0 +1,16 @@ +#include +#include "boost/pfr.hpp" + +struct my_struct { // no ostream operator defined! + int i; + char c; + double d; +}; + +int main() { + using namespace boost::pfr::flat_ops; // ostream operator out-of-the-box for all PODs! + + my_struct s{100, 'H', 3.141593}; + std::cout << "my_struct has " << boost::pfr::flat_tuple_size::value + << " fields: " << s << "\n"; +}