Searching for Review Manager for reflection library without macro
Hello, PFR is a C++14 library that provides tuple-like methods for aggregate initializables. Library has a set of predefined operators and useful functions for everyday use. Works with user-defined types without any macro or boilerplate code. Library: https://github.com/apolukhin/magic_get Docs: http://apolukhin.github.io/magic_get/ Boost Library Incubator: http://blincubator.com/bi_library/pfr-pod-flat-reflection/?gform_post_id=160... Anyone wishing to become a Review Manager for the library? Boost libraries that may benefit from PFR: * Convert - for out-of-the-box conversions of user types * Hana - for using user types instead of tuples * Intrusive - for reusing unused bits in user provided types * Serialization - for out-of-the-box serialization of user types * Spirit - for putting rule results into user provided types without Phoenix or Fusion macro * Test - for outputting content of user provided types * TypeTraits - for traits like has_unique_object_representations in C++14 -- Best regards, Antony Polukhin
10.08.2017 08:20, Antony Polukhin via Boost пишет:
Hello,
PFR is a C++14 library that provides tuple-like methods for aggregate initializables. Library has a set of predefined operators and useful functions for everyday use. Works with user-defined types without any macro or boilerplate code.
Library: https://github.com/apolukhin/magic_get Docs: http://apolukhin.github.io/magic_get/ Boost Library Incubator: http://blincubator.com/bi_library/pfr-pod-flat-reflection/?gform_post_id=160...
Anyone wishing to become a Review Manager for the library?
Boost libraries that may benefit from PFR: * Convert - for out-of-the-box conversions of user types * Hana - for using user types instead of tuples * Intrusive - for reusing unused bits in user provided types * Serialization - for out-of-the-box serialization of user types * Spirit - for putting rule results into user provided types without Phoenix or Fusion macro * Test - for outputting content of user provided types * TypeTraits - for traits like has_unique_object_representations in C++14
Hello, Can i become review manager for the PFR library? Are there any people who are interested in reviewing PFR library?
________________________________________ From: Boost [boost-bounces@lists.boost.org] on behalf of Mike Gresens via Boost [boost@lists.boost.org] Sent: 15 August 2017 07:15 To: boost@lists.boost.org; Mike Gresens Cc: Mike Gresens Subject: Re: [boost] Searching for Review Manager for reflection library without macro
Am 15.08.2017 um 02:57 schrieb Alexander Zaitsev via Boost:
Are there any people who are interested in reviewing PFR library?
I would like to participate.
Best regards, Mike...
I would like to participate too. I have looked on the list of reviews to find dates for this, which I guess are not fixed yet. John Fletcher _______________________________________________ Unsubscribe & other changes: https://emea01.safelinks.protection.outlook.com/?url=http%3A%2F%2Flists.boost.org%2Fmailman%2Flistinfo.cgi%2Fboost&data=02%7C01%7CJ.P.Fletcher%40aston.ac.uk%7Cd4f45b108ab14ab8b14608d4e3a50693%7Ca085950c4c2544d5945ab852fa44a221%7C0%7C0%7C636383745298610448&sdata=s30V6JhUYw5dotYq4vg5aOU7U1i53xgtrA3QvQx98V4%3D&reserved=0
On Thu, Aug 10, 2017 at 12:20 AM, Antony Polukhin via Boost < boost@lists.boost.org> wrote:
Hello,
PFR is a C++14 library that provides tuple-like methods for aggregate initializables. Library has a set of predefined operators and useful functions for everyday use. Works with user-defined types without any macro or boilerplate code.
Library: https://github.com/apolukhin/magic_get Docs: http://apolukhin.github.io/magic_get/ Boost Library Incubator:
http://blincubator.com/bi_library/pfr-pod-flat-reflection/?gform_post_id=160...
Anyone wishing to become a Review Manager for the library?
Boost libraries that may benefit from PFR: * Convert - for out-of-the-box conversions of user types * Hana - for using user types instead of tuples * Intrusive - for reusing unused bits in user provided types * Serialization - for out-of-the-box serialization of user types * Spirit - for putting rule results into user provided types without Phoenix or Fusion macro * Test - for outputting content of user provided types * TypeTraits - for traits like has_unique_object_representations in C++14
-- Best regards, Antony Polukhin
I'm a bit late to respond here, but I just want to say that I hope this library finds a review manager. Although I have not used it personally, I have recommended it to several people for real world problems, and I have also studied the implementation. I believe the library is unique, clever, and useful (especially pre C++17). There is a CppCon video about the implementation here, for those who haven't seen it: https://youtu.be/abdeAew3gmQ Barrett
On Thu, Aug 10, 2017 at 12:20 AM, Antony Polukhin via Boost < boost@lists.boost.org> wrote:
Hello,
PFR is a C++14 library that provides tuple-like methods for aggregate initializables. Library has a set of predefined operators and useful functions for everyday use. Works with user-defined types without any macro or boilerplate code.
Library: https://github.com/apolukhin/magic_get Docs: http://apolukhin.github.io/magic_get/
Does this library need the latest boost develop? When using the (develop-)code with 1.64, the "motivating" example gives the following errors on VS2017 15.3.3 (/std::latest): 1>------ Rebuild All started: Project: pfr, Configuration: Release x64 ------ 1>pfr.cpp 1>z:\vc\x64\include\boost/pfr/detail/core14.hpp(54): warning C4554: '<<': check operator precedence for possible error; use parentheses to clarify precedence 1>z:\vc\x64\include\boost/pfr/detail/core14.hpp(58): warning C4554: '<<': check operator precedence for possible error; use parentheses to clarify precedence 1>z:\vc\x64\include\boost/pfr/detail/core14.hpp(62): warning C4554: '<<': check operator precedence for possible error; use parentheses to clarify precedence 1>z:\vc\x64\include\boost/pfr/detail/core14.hpp(67): warning C4554: '<<': check operator precedence for possible error; use parentheses to clarify precedence 1>z:\vc\x64\include\boost/pfr/detail/core14.hpp(72): warning C4554: '<<': check operator precedence for possible error; use parentheses to clarify precedence 1>z:\vc\x64\include\boost/pfr/detail/core14.hpp(77): warning C4554: '<<': check operator precedence for possible error; use parentheses to clarify precedence 1>z:\vc\x64\include\boost/pfr/flat/tuple_size.hpp(26): error C2039: 'size_v': is not a member of '`global namespace'' 1>z:\vc\x64\include\boost/pfr/flat/tuple_size.hpp(26): error C2146: syntax error: missing '>' before identifier 'size_v' 1>z:\vc\x64\include\boost/pfr/flat/tuple_size.hpp(26): error C2993: 'unknown-type': illegal type for non-type template parameter 'Index' 1>z:\vc\x64\include\boost/pfr/detail/detectors.hpp(33): error C2679: binary '<<': no operator found which takes a right-hand operand of type 'const my_struct' (or there is no acceptable conversion) 1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\ostream(488): note: could be 'std::basic_ostream<char,std::char_traits<char>> &std::basic_ostream<char,std::char_traits<char>>::operator <<(std::basic_streambuf<char,std::char_traits<char>> *)' 1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\ostream(468): note: or 'std::basic_ostream<char,std::char_traits<char>> &std::basic_ostream<char,std::char_traits<char>>::operator <<(const void *)' 1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\ostream(448): note: or 'std::basic_ostream<char,std::char_traits<char>> &std::basic_ostream<char,std::char_traits<char>>::operator <<(long double)' <snip> 1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\ostream(209): note: or 'std::basic_ostream<char,std::char_traits<char>> &std::basic_ostream<char,std::char_traits<char>>::operator <<(bool)' 1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\ostream(203): note: or 'std::basic_ostream<char,std::char_traits<char>> &std::basic_ostream<char,std::char_traits<char>>::operator <<(std::ios_base &(__cdecl *)(std::ios_base &))' 1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\ostream(197): note: or 'std::basic_ostream<char,std::char_traits<char>> &std::basic_ostream<char,std::char_traits<char>>::operator <<(std::basic_ios<char,std::char_traits<char>> &(__cdecl *)(std::basic_ios<char,std::char_traits<char>> &))' 1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\ostream(192): note: or 'std::basic_ostream<char,std::char_traits<char>> &std::basic_ostream<char,std::char_traits<char>>::operator <<(std::basic_ostream<char,std::char_traits<char>> &(__cdecl *)(std::basic_ostream<char,std::char_traits<char>> &))' 1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\ostream(684): note: or 'std::basic_ostream<char,std::char_traits<char>> &std::operator <<<char,std::char_traits<char>>(std::basic_ostream<char,std::char_traits<char>> &,const char *)' <snip> 1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\ostream(973): note: or 'std::basic_ostream<char,std::char_traits<char>> &std::operator <<<char,std::char_traits<char>,my_struct>(std::basic_ostream<char,std::char_traits<char>> &&,const _Ty &)' 1> with 1> [ 1> _Ty=my_struct 1> ] 1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\ostream(1011): note: or 'std::basic_ostream<char,std::char_traits<char>> &std::operator <<<char,std::char_traits<char>>(std::basic_ostream<char,std::char_traits<char>> &,const std::error_code &)' 1>z:\vc\x64\include\boost/pfr/detail/detectors.hpp(33): note: while trying to match the argument list '(std::basic_ostream<char,std::char_traits<char>>, const my_struct)' 1>z:\vc\x64\include\boost/pfr/detail/detectors.hpp(21): note: see reference to alias template instantiation 'ostreamable_detector<std::basic_ostream<char,std::char_traits<char>>&,Tright>' being compiled 1> with 1> [ 1> Tright=const my_struct & 1> ] 1>pfr.cpp(15): note: see reference to class template instantiation 'boost::pfr::detail::not_appliable<boost::pfr::detail::ostreamable_detector,std::basic_ostream<char,std::char_traits<char>> &,const my_struct &>' being compiled 1>z:\vc\x64\include\boost/pfr/precise/ops.hpp(128): note: see reference to function template instantiation 'std::enable_if<boost::pfr::detail::not_appliable<boost::pfr::detail::ostreamable_detector,Stream&,const Type&>::value,Stream&>::type boost::pfr::ops::operator <<(std::basic_ostream<_Elem,_Traits> &,const T &)' being compiled 1> with 1> [ 1> Stream=std::basic_ostream<_Elem,_Traits>, 1> Type=T 1> ] 1>z:\vc\x64\include\boost/pfr/detail/detectors.hpp(33): error C2088: '<<': illegal for class 1>Done building project "pfr.vcxproj" -- FAILED. With clang/LLVM-6 (-std=c++2a), the following errors are generated: 1>------ Rebuild All started: Project: pfr, Configuration: Release x64 ------ 1>In file included from pfr.cpp:3: 1>In file included from z:\vc\x64\include\boost/pfr.hpp:12: 1>In file included from z:\vc\x64\include\boost/pfr/precise.hpp:12: 1>In file included from z:\vc\x64\include\boost/pfr/precise/core.hpp:20: 1>z:\vc\x64\include\boost/pfr/detail/core17.hpp(21): error : cannot decompose this type; 'std::tuple_size<const boost::pfr::detail::do_not_define_std_tuple_size_for_me>::value' is not a valid integral constant expression 1>z:\vc\x64\include\boost/pfr/detail/core17.hpp(39): note: in instantiation of function template specialization 'boost::pfr::detail::do_structured_bindings_work<boost::pfr::detail::do_not_define_std_tuple_size_for_me>' requested here 1>z:\vc\x64\include\boost/pfr/detail/core17.hpp(39): error : static_assert expression is not an integral constant expression 1>In file included from pfr.cpp:3: 1>In file included from z:\vc\x64\include\boost/pfr.hpp:12: 1>In file included from z:\vc\x64\include\boost/pfr/precise.hpp:12: 1>In file included from z:\vc\x64\include\boost/pfr/precise/core.hpp:20: 1>In file included from z:\vc\x64\include\boost/pfr/detail/core17.hpp:10: 1>z:\vc\x64\include\boost/pfr/detail/core17_generated.hpp(51): error : cannot decompose this type; 'std::tuple_size<const my_struct>::value' is not a valid integral constant expression 1>z:\vc\x64\include\boost/pfr/detail/core17_generated.hpp(1032): note: in instantiation of function template specialization 'boost::pfr::detail::as_tuple_impl<const my_struct &>' requested here 1>z:\vc\x64\include\boost/pfr/precise/io.hpp(45): note: in instantiation of function template specialization 'boost::pfr::detail::as_tuple<my_struct>' requested here 1>z:\vc\x64\include\boost/pfr/precise/ops.hpp(129): note: in instantiation of function template specialization 'boost::pfr::write<char, std::char_traits<char>, my_struct>' requested here 1>pfr.cpp(15): note: in instantiation of function template specialization 'boost::pfr::ops::operator<<<char, std::char_traits<char>, my_struct>' requested here 1>Done building project "pfr.vcxproj" -- FAILED. degski -- "*Ihre sogenannte Religion wirkt bloß wie ein Opiat reizend, betäubend, Schmerzen aus Schwäche stillend.*" - Novalis 1798
2017-09-05 8:31 GMT+03:00 degski via Boost <boost@lists.boost.org>:
On Thu, Aug 10, 2017 at 12:20 AM, Antony Polukhin via Boost < boost@lists.boost.org> wrote:
Hello,
PFR is a C++14 library that provides tuple-like methods for aggregate initializables. Library has a set of predefined operators and useful functions for everyday use. Works with user-defined types without any macro or boilerplate code.
Library: https://github.com/apolukhin/magic_get Docs: http://apolukhin.github.io/magic_get/
Does this library need the latest boost develop?
No, it does not depend on Boost. Only some tests use Boost headers.
When using the (develop-)code with 1.64, the "motivating" example gives the following errors on VS2017 15.3.3 (/std::latest):
<snip>
I have not tested it on latest MSVC yet. I've tested it on some non-old MSVCs and it failed to build because of the constexpr support in MSVC. I'll try too build it with latest MSVC in a few weeks and I'll try to bypass all the possible compiler related issues. -- Best regards, Antony Polukhin
On 6 September 2017 at 22:07, Antony Polukhin via Boost < boost@lists.boost.org> wrote:
... and it failed to build because of the constexpr support in MSVC.
As it also fails to build with Clang-LLVM-6 (with STL of VS2017 15.3.3), there must be another issue now (STL related?).
I'll try too build it with latest MSVC in a few weeks and I'll try to bypass all the possible compiler related issues.
Great, it lookes interesting and usefull. degski -- "*Ihre sogenannte Religion wirkt bloß wie ein Opiat reizend, betäubend, Schmerzen aus Schwäche stillend.*" - Novalis 1798
2017-09-05 7:40 GMT+03:00 Barrett Adair via Boost <boost@lists.boost.org>:
On Thu, Aug 10, 2017 at 12:20 AM, Antony Polukhin via Boost < boost@lists.boost.org> wrote:
Hello,
PFR is a C++14 library that provides tuple-like methods for aggregate initializables. Library has a set of predefined operators and useful functions for everyday use. Works with user-defined types without any macro or boilerplate code.
Library: https://github.com/apolukhin/magic_get Docs: http://apolukhin.github.io/magic_get/ Boost Library Incubator:
http://blincubator.com/bi_library/pfr-pod-flat-reflection/?gform_post_id=160...
Anyone wishing to become a Review Manager for the library?
<...>
I'm a bit late to respond here, but I just want to say that I hope this library finds a review manager. Although I have not used it personally, I have recommended it to several people for real world problems, and I have also studied the implementation. I believe the library is unique, clever, and useful (especially pre C++17).
I'd like to highlight that the Review Manager position is still vacant. Library awaits it's hero! -- Best regards, Antony Polukhin
On Sep 6, 2017 21:12, "Antony Polukhin via Boost" <boost@lists.boost.org> wrote: I'd like to highlight that the Review Manager position is still vacant. Library awaits it's hero! Hi, I volunteer to be the review manager of the Precise and Flat Reflection library. Benedek
participants (7)
-
Alexander Zaitsev
-
Antony Polukhin
-
Barrett Adair
-
Benedek Thaler
-
degski
-
Fletcher, John P
-
Mike Gresens