From 52a5a489ba80e29868c7af07a26ee15ba256c42f Mon Sep 17 00:00:00 2001 From: denzor200 Date: Sat, 7 Jan 2023 01:48:39 +0600 Subject: [PATCH 1/4] split tests into two projects --- test/Jamfile | 9 ++++++++ test/config/Jamfile.v2 | 23 +++++++++++++++++++ test/{ => config}/print_config.cpp | 0 test/{ => core}/Jamfile.v2 | 14 +++++------ .../can_be_as_fallback_in_the_fusion.cpp | 0 .../boost_pfr_disabled_via_macro.cpp | 0 .../fields_count_on_reference.cpp | 0 test/{ => core}/compile-fail/inherited.cpp | 0 .../compile-fail/inherited_nonempty.cpp | 0 .../movable_and_lvalue_references.cpp | 0 .../{ => core}/compile-fail/non_aggregate.cpp | 0 test/{ => core}/compile-fail/ops_on_union.cpp | 0 test/{ => core}/compile-fail/ops_unions.cpp | 0 .../compile-fail/ops_unrestricted_unions.cpp | 0 .../compile-fail/pfr_review_test2.cpp | 0 .../compile-fail/private_fields.cpp | 0 .../compile-fail/protected_fields.cpp | 0 test/{ => core}/compile-fail/rvalue_tie.cpp | 0 .../compile-fail/virtual_functions.cpp | 0 test/{ => core}/loophole_detection.cpp | 0 test/{ => core}/offset_based_getter.cpp | 0 test/{ => core}/run/bitfields_count.cpp | 0 test/{ => core}/run/constexpr_ops.cpp | 0 test/{ => core}/run/destructuring_tie.cpp | 0 test/{ => core}/run/error_pfr_c1202.cpp | 0 test/{ => core}/run/fields_count_on_const.cpp | 0 test/{ => core}/run/for_each_field.cpp | 0 test/{ => core}/run/functions_for.cpp | 0 test/{ => core}/run/get_const_field.cpp | 0 .../run/get_non_default_constructible.cpp | 0 test/{ => core}/run/get_rvalue.cpp | 0 .../run/is_implicitly_reflectable.cpp | 0 test/{ => core}/run/is_reflectable.cpp | 0 test/{ => core}/run/issue30.cpp | 0 test/{ => core}/run/issue33.cpp | 0 test/{ => core}/run/motivating_example.cpp | 0 test/{ => core}/run/motivating_example2.cpp | 0 .../run/non_copyable_but_movable.cpp | 0 .../{ => core}/run/non_dc_non_cop_but_mov.cpp | 0 .../run/non_default_constructible.cpp | 0 test/{ => core}/run/non_movable.cpp | 0 test/{ => core}/run/non_std_layout.cpp | 0 test/{ => core}/run/ops.cpp | 0 test/{ => core}/run/optional_chrono.cpp | 0 test/{ => core}/run/optional_like.cpp | 0 test/{ => core}/run/read_write.cpp | 0 .../{ => core}/run/read_write_non_literal.cpp | 0 test/{ => core}/run/std_interactions.cpp | 0 test/{ => core}/run/template_constructor.cpp | 0 .../run/template_forwarding_ref.cpp | 0 .../{ => core}/run/template_unconstrained.cpp | 0 test/{ => core}/run/tie_anonymous.cpp | 0 .../run/tie_anonymous_const_field.cpp | 0 test/{ => core}/run/tuple_size.cpp | 0 test/{ => core}/test_tuple_sizes_on.cpp | 0 55 files changed, 38 insertions(+), 8 deletions(-) create mode 100644 test/Jamfile create mode 100644 test/config/Jamfile.v2 rename test/{ => config}/print_config.cpp (100%) rename test/{ => core}/Jamfile.v2 (89%) rename test/{ => core}/can_be_as_fallback_in_the_fusion.cpp (100%) rename test/{ => core}/compile-fail/boost_pfr_disabled_via_macro.cpp (100%) rename test/{ => core}/compile-fail/fields_count_on_reference.cpp (100%) rename test/{ => core}/compile-fail/inherited.cpp (100%) rename test/{ => core}/compile-fail/inherited_nonempty.cpp (100%) rename test/{ => core}/compile-fail/movable_and_lvalue_references.cpp (100%) rename test/{ => core}/compile-fail/non_aggregate.cpp (100%) rename test/{ => core}/compile-fail/ops_on_union.cpp (100%) rename test/{ => core}/compile-fail/ops_unions.cpp (100%) rename test/{ => core}/compile-fail/ops_unrestricted_unions.cpp (100%) rename test/{ => core}/compile-fail/pfr_review_test2.cpp (100%) rename test/{ => core}/compile-fail/private_fields.cpp (100%) rename test/{ => core}/compile-fail/protected_fields.cpp (100%) rename test/{ => core}/compile-fail/rvalue_tie.cpp (100%) rename test/{ => core}/compile-fail/virtual_functions.cpp (100%) rename test/{ => core}/loophole_detection.cpp (100%) rename test/{ => core}/offset_based_getter.cpp (100%) rename test/{ => core}/run/bitfields_count.cpp (100%) rename test/{ => core}/run/constexpr_ops.cpp (100%) rename test/{ => core}/run/destructuring_tie.cpp (100%) rename test/{ => core}/run/error_pfr_c1202.cpp (100%) rename test/{ => core}/run/fields_count_on_const.cpp (100%) rename test/{ => core}/run/for_each_field.cpp (100%) rename test/{ => core}/run/functions_for.cpp (100%) rename test/{ => core}/run/get_const_field.cpp (100%) rename test/{ => core}/run/get_non_default_constructible.cpp (100%) rename test/{ => core}/run/get_rvalue.cpp (100%) rename test/{ => core}/run/is_implicitly_reflectable.cpp (100%) rename test/{ => core}/run/is_reflectable.cpp (100%) rename test/{ => core}/run/issue30.cpp (100%) rename test/{ => core}/run/issue33.cpp (100%) rename test/{ => core}/run/motivating_example.cpp (100%) rename test/{ => core}/run/motivating_example2.cpp (100%) rename test/{ => core}/run/non_copyable_but_movable.cpp (100%) rename test/{ => core}/run/non_dc_non_cop_but_mov.cpp (100%) rename test/{ => core}/run/non_default_constructible.cpp (100%) rename test/{ => core}/run/non_movable.cpp (100%) rename test/{ => core}/run/non_std_layout.cpp (100%) rename test/{ => core}/run/ops.cpp (100%) rename test/{ => core}/run/optional_chrono.cpp (100%) rename test/{ => core}/run/optional_like.cpp (100%) rename test/{ => core}/run/read_write.cpp (100%) rename test/{ => core}/run/read_write_non_literal.cpp (100%) rename test/{ => core}/run/std_interactions.cpp (100%) rename test/{ => core}/run/template_constructor.cpp (100%) rename test/{ => core}/run/template_forwarding_ref.cpp (100%) rename test/{ => core}/run/template_unconstrained.cpp (100%) rename test/{ => core}/run/tie_anonymous.cpp (100%) rename test/{ => core}/run/tie_anonymous_const_field.cpp (100%) rename test/{ => core}/run/tuple_size.cpp (100%) rename test/{ => core}/test_tuple_sizes_on.cpp (100%) diff --git a/test/Jamfile b/test/Jamfile new file mode 100644 index 0000000..de6f4c0 --- /dev/null +++ b/test/Jamfile @@ -0,0 +1,9 @@ +# Copyright (C) 2023 Denis Mikhailov +# +# Use, modification and distribution is subject to the Boost Software License, +# Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +# http://www.boost.org/LICENSE_1_0.txt) +# + +build-project config ; +build-project core ; \ No newline at end of file diff --git a/test/config/Jamfile.v2 b/test/config/Jamfile.v2 new file mode 100644 index 0000000..dcd3a7e --- /dev/null +++ b/test/config/Jamfile.v2 @@ -0,0 +1,23 @@ +# Copyright (C) 2023 Denis Mikhailov +# +# Use, modification and distribution is subject to the Boost Software License, +# Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +# http://www.boost.org/LICENSE_1_0.txt) +# + +import python ; +import testing ; +import ../../config/checks/config : requires ; + +project + : source-location . + : requirements + BOOST_PFR_DETAIL_STRICT_RVALUE_TESTING=1 + [ requires cxx14_constexpr ] + ; + + +test-suite pfr_tests + : + [ run print_config.cpp : : : always_show_run_output : auto_engine_config ] + ; diff --git a/test/print_config.cpp b/test/config/print_config.cpp similarity index 100% rename from test/print_config.cpp rename to test/config/print_config.cpp diff --git a/test/Jamfile.v2 b/test/core/Jamfile.v2 similarity index 89% rename from test/Jamfile.v2 rename to test/core/Jamfile.v2 index b1e1558..6e0d006 100644 --- a/test/Jamfile.v2 +++ b/test/core/Jamfile.v2 @@ -40,7 +40,7 @@ explicit compiler_supports_loophole ; local DISABLE_ON_MSVC = ; #msvc:no ; local REQUIRE_LOOPHOLE = - [ check-target-builds ../test//compiler_supports_loophole : : no ] + [ check-target-builds ../core//compiler_supports_loophole : : no ] ; local STRUCTURED_BINDING_ENGINE = BOOST_PFR_USE_LOOPHOLE=0 BOOST_PFR_USE_CPP17=1 [ requires cxx17_structured_bindings ] ; @@ -49,8 +49,6 @@ local CLASSIC_ENGINE = BOOST_PFR_USE_LOOPHOLE=0 BOOST_PFR_USE_CP test-suite pfr_tests : - [ run print_config.cpp : : : always_show_run_output : auto_engine_config ] - [ run offset_based_getter.cpp ] [ run can_be_as_fallback_in_the_fusion.cpp ] @@ -62,9 +60,9 @@ test-suite pfr_tests [ run test_tuple_sizes_on.cpp : : : BOOST_PFR_RUN_TEST_ON="std::size_t" : test_tuple_sizes_on_size_ts ] [ run run/motivating_example.cpp : : : : auto_engine_motivating ] - [ run ../example/sample_printing.cpp : : : : auto_engine_sample_printing ] - [ run ../example/get.cpp : : : : auto_engine_get ] - [ run ../example/quick_examples.cpp : : : : auto_engine_quick ] + [ run ../../example/sample_printing.cpp : : : : auto_engine_sample_printing ] + [ run ../../example/get.cpp : : : : auto_engine_get ] + [ run ../../example/quick_examples.cpp : : : : auto_engine_quick ] ; local BLACKLIST_TESTS_FOR_LOOPHOLE = @@ -97,7 +95,7 @@ local BLACKLIST_TESTS_FOR_CLASSIC = tie_anonymous_const_field ; -for local source_file in [ glob ./run/*.cpp ] [ glob ../example/*.cpp ] +for local source_file in [ glob ./run/*.cpp ] [ glob ../../example/*.cpp ] { local target_name = $(source_file[1]:B) ; pfr_tests += [ run $(source_file) : : : $(STRUCTURED_BINDING_ENGINE) : $(target_name)_sb ] ; @@ -131,5 +129,5 @@ for local source_file in [ glob ./compile-fail/*.cpp ] if [ python.configured ] { - testing.make-test run-pyd : ../misc/generate_cpp17.py ; + testing.make-test run-pyd : ../../misc/generate_cpp17.py ; } diff --git a/test/can_be_as_fallback_in_the_fusion.cpp b/test/core/can_be_as_fallback_in_the_fusion.cpp similarity index 100% rename from test/can_be_as_fallback_in_the_fusion.cpp rename to test/core/can_be_as_fallback_in_the_fusion.cpp diff --git a/test/compile-fail/boost_pfr_disabled_via_macro.cpp b/test/core/compile-fail/boost_pfr_disabled_via_macro.cpp similarity index 100% rename from test/compile-fail/boost_pfr_disabled_via_macro.cpp rename to test/core/compile-fail/boost_pfr_disabled_via_macro.cpp diff --git a/test/compile-fail/fields_count_on_reference.cpp b/test/core/compile-fail/fields_count_on_reference.cpp similarity index 100% rename from test/compile-fail/fields_count_on_reference.cpp rename to test/core/compile-fail/fields_count_on_reference.cpp diff --git a/test/compile-fail/inherited.cpp b/test/core/compile-fail/inherited.cpp similarity index 100% rename from test/compile-fail/inherited.cpp rename to test/core/compile-fail/inherited.cpp diff --git a/test/compile-fail/inherited_nonempty.cpp b/test/core/compile-fail/inherited_nonempty.cpp similarity index 100% rename from test/compile-fail/inherited_nonempty.cpp rename to test/core/compile-fail/inherited_nonempty.cpp diff --git a/test/compile-fail/movable_and_lvalue_references.cpp b/test/core/compile-fail/movable_and_lvalue_references.cpp similarity index 100% rename from test/compile-fail/movable_and_lvalue_references.cpp rename to test/core/compile-fail/movable_and_lvalue_references.cpp diff --git a/test/compile-fail/non_aggregate.cpp b/test/core/compile-fail/non_aggregate.cpp similarity index 100% rename from test/compile-fail/non_aggregate.cpp rename to test/core/compile-fail/non_aggregate.cpp diff --git a/test/compile-fail/ops_on_union.cpp b/test/core/compile-fail/ops_on_union.cpp similarity index 100% rename from test/compile-fail/ops_on_union.cpp rename to test/core/compile-fail/ops_on_union.cpp diff --git a/test/compile-fail/ops_unions.cpp b/test/core/compile-fail/ops_unions.cpp similarity index 100% rename from test/compile-fail/ops_unions.cpp rename to test/core/compile-fail/ops_unions.cpp diff --git a/test/compile-fail/ops_unrestricted_unions.cpp b/test/core/compile-fail/ops_unrestricted_unions.cpp similarity index 100% rename from test/compile-fail/ops_unrestricted_unions.cpp rename to test/core/compile-fail/ops_unrestricted_unions.cpp diff --git a/test/compile-fail/pfr_review_test2.cpp b/test/core/compile-fail/pfr_review_test2.cpp similarity index 100% rename from test/compile-fail/pfr_review_test2.cpp rename to test/core/compile-fail/pfr_review_test2.cpp diff --git a/test/compile-fail/private_fields.cpp b/test/core/compile-fail/private_fields.cpp similarity index 100% rename from test/compile-fail/private_fields.cpp rename to test/core/compile-fail/private_fields.cpp diff --git a/test/compile-fail/protected_fields.cpp b/test/core/compile-fail/protected_fields.cpp similarity index 100% rename from test/compile-fail/protected_fields.cpp rename to test/core/compile-fail/protected_fields.cpp diff --git a/test/compile-fail/rvalue_tie.cpp b/test/core/compile-fail/rvalue_tie.cpp similarity index 100% rename from test/compile-fail/rvalue_tie.cpp rename to test/core/compile-fail/rvalue_tie.cpp diff --git a/test/compile-fail/virtual_functions.cpp b/test/core/compile-fail/virtual_functions.cpp similarity index 100% rename from test/compile-fail/virtual_functions.cpp rename to test/core/compile-fail/virtual_functions.cpp diff --git a/test/loophole_detection.cpp b/test/core/loophole_detection.cpp similarity index 100% rename from test/loophole_detection.cpp rename to test/core/loophole_detection.cpp diff --git a/test/offset_based_getter.cpp b/test/core/offset_based_getter.cpp similarity index 100% rename from test/offset_based_getter.cpp rename to test/core/offset_based_getter.cpp diff --git a/test/run/bitfields_count.cpp b/test/core/run/bitfields_count.cpp similarity index 100% rename from test/run/bitfields_count.cpp rename to test/core/run/bitfields_count.cpp diff --git a/test/run/constexpr_ops.cpp b/test/core/run/constexpr_ops.cpp similarity index 100% rename from test/run/constexpr_ops.cpp rename to test/core/run/constexpr_ops.cpp diff --git a/test/run/destructuring_tie.cpp b/test/core/run/destructuring_tie.cpp similarity index 100% rename from test/run/destructuring_tie.cpp rename to test/core/run/destructuring_tie.cpp diff --git a/test/run/error_pfr_c1202.cpp b/test/core/run/error_pfr_c1202.cpp similarity index 100% rename from test/run/error_pfr_c1202.cpp rename to test/core/run/error_pfr_c1202.cpp diff --git a/test/run/fields_count_on_const.cpp b/test/core/run/fields_count_on_const.cpp similarity index 100% rename from test/run/fields_count_on_const.cpp rename to test/core/run/fields_count_on_const.cpp diff --git a/test/run/for_each_field.cpp b/test/core/run/for_each_field.cpp similarity index 100% rename from test/run/for_each_field.cpp rename to test/core/run/for_each_field.cpp diff --git a/test/run/functions_for.cpp b/test/core/run/functions_for.cpp similarity index 100% rename from test/run/functions_for.cpp rename to test/core/run/functions_for.cpp diff --git a/test/run/get_const_field.cpp b/test/core/run/get_const_field.cpp similarity index 100% rename from test/run/get_const_field.cpp rename to test/core/run/get_const_field.cpp diff --git a/test/run/get_non_default_constructible.cpp b/test/core/run/get_non_default_constructible.cpp similarity index 100% rename from test/run/get_non_default_constructible.cpp rename to test/core/run/get_non_default_constructible.cpp diff --git a/test/run/get_rvalue.cpp b/test/core/run/get_rvalue.cpp similarity index 100% rename from test/run/get_rvalue.cpp rename to test/core/run/get_rvalue.cpp diff --git a/test/run/is_implicitly_reflectable.cpp b/test/core/run/is_implicitly_reflectable.cpp similarity index 100% rename from test/run/is_implicitly_reflectable.cpp rename to test/core/run/is_implicitly_reflectable.cpp diff --git a/test/run/is_reflectable.cpp b/test/core/run/is_reflectable.cpp similarity index 100% rename from test/run/is_reflectable.cpp rename to test/core/run/is_reflectable.cpp diff --git a/test/run/issue30.cpp b/test/core/run/issue30.cpp similarity index 100% rename from test/run/issue30.cpp rename to test/core/run/issue30.cpp diff --git a/test/run/issue33.cpp b/test/core/run/issue33.cpp similarity index 100% rename from test/run/issue33.cpp rename to test/core/run/issue33.cpp diff --git a/test/run/motivating_example.cpp b/test/core/run/motivating_example.cpp similarity index 100% rename from test/run/motivating_example.cpp rename to test/core/run/motivating_example.cpp diff --git a/test/run/motivating_example2.cpp b/test/core/run/motivating_example2.cpp similarity index 100% rename from test/run/motivating_example2.cpp rename to test/core/run/motivating_example2.cpp diff --git a/test/run/non_copyable_but_movable.cpp b/test/core/run/non_copyable_but_movable.cpp similarity index 100% rename from test/run/non_copyable_but_movable.cpp rename to test/core/run/non_copyable_but_movable.cpp diff --git a/test/run/non_dc_non_cop_but_mov.cpp b/test/core/run/non_dc_non_cop_but_mov.cpp similarity index 100% rename from test/run/non_dc_non_cop_but_mov.cpp rename to test/core/run/non_dc_non_cop_but_mov.cpp diff --git a/test/run/non_default_constructible.cpp b/test/core/run/non_default_constructible.cpp similarity index 100% rename from test/run/non_default_constructible.cpp rename to test/core/run/non_default_constructible.cpp diff --git a/test/run/non_movable.cpp b/test/core/run/non_movable.cpp similarity index 100% rename from test/run/non_movable.cpp rename to test/core/run/non_movable.cpp diff --git a/test/run/non_std_layout.cpp b/test/core/run/non_std_layout.cpp similarity index 100% rename from test/run/non_std_layout.cpp rename to test/core/run/non_std_layout.cpp diff --git a/test/run/ops.cpp b/test/core/run/ops.cpp similarity index 100% rename from test/run/ops.cpp rename to test/core/run/ops.cpp diff --git a/test/run/optional_chrono.cpp b/test/core/run/optional_chrono.cpp similarity index 100% rename from test/run/optional_chrono.cpp rename to test/core/run/optional_chrono.cpp diff --git a/test/run/optional_like.cpp b/test/core/run/optional_like.cpp similarity index 100% rename from test/run/optional_like.cpp rename to test/core/run/optional_like.cpp diff --git a/test/run/read_write.cpp b/test/core/run/read_write.cpp similarity index 100% rename from test/run/read_write.cpp rename to test/core/run/read_write.cpp diff --git a/test/run/read_write_non_literal.cpp b/test/core/run/read_write_non_literal.cpp similarity index 100% rename from test/run/read_write_non_literal.cpp rename to test/core/run/read_write_non_literal.cpp diff --git a/test/run/std_interactions.cpp b/test/core/run/std_interactions.cpp similarity index 100% rename from test/run/std_interactions.cpp rename to test/core/run/std_interactions.cpp diff --git a/test/run/template_constructor.cpp b/test/core/run/template_constructor.cpp similarity index 100% rename from test/run/template_constructor.cpp rename to test/core/run/template_constructor.cpp diff --git a/test/run/template_forwarding_ref.cpp b/test/core/run/template_forwarding_ref.cpp similarity index 100% rename from test/run/template_forwarding_ref.cpp rename to test/core/run/template_forwarding_ref.cpp diff --git a/test/run/template_unconstrained.cpp b/test/core/run/template_unconstrained.cpp similarity index 100% rename from test/run/template_unconstrained.cpp rename to test/core/run/template_unconstrained.cpp diff --git a/test/run/tie_anonymous.cpp b/test/core/run/tie_anonymous.cpp similarity index 100% rename from test/run/tie_anonymous.cpp rename to test/core/run/tie_anonymous.cpp diff --git a/test/run/tie_anonymous_const_field.cpp b/test/core/run/tie_anonymous_const_field.cpp similarity index 100% rename from test/run/tie_anonymous_const_field.cpp rename to test/core/run/tie_anonymous_const_field.cpp diff --git a/test/run/tuple_size.cpp b/test/core/run/tuple_size.cpp similarity index 100% rename from test/run/tuple_size.cpp rename to test/core/run/tuple_size.cpp diff --git a/test/test_tuple_sizes_on.cpp b/test/core/test_tuple_sizes_on.cpp similarity index 100% rename from test/test_tuple_sizes_on.cpp rename to test/core/test_tuple_sizes_on.cpp From 47c64135303437ad0d28e8fcf7eb505077079f67 Mon Sep 17 00:00:00 2001 From: denzor200 Date: Sat, 7 Jan 2023 02:28:03 +0600 Subject: [PATCH 2/4] disable cxx14 restriction for config's test --- test/config/Jamfile.v2 | 1 - 1 file changed, 1 deletion(-) diff --git a/test/config/Jamfile.v2 b/test/config/Jamfile.v2 index dcd3a7e..240d039 100644 --- a/test/config/Jamfile.v2 +++ b/test/config/Jamfile.v2 @@ -13,7 +13,6 @@ project : source-location . : requirements BOOST_PFR_DETAIL_STRICT_RVALUE_TESTING=1 - [ requires cxx14_constexpr ] ; From bca51da20f3140da11a23a604b245969d9f3d1fd Mon Sep 17 00:00:00 2001 From: denzor200 Date: Sat, 7 Jan 2023 16:43:20 +0600 Subject: [PATCH 3/4] Add old MSVC CI stage --- test/appveyor.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/test/appveyor.yml b/test/appveyor.yml index 67ca68f..8dd154d 100644 --- a/test/appveyor.yml +++ b/test/appveyor.yml @@ -32,6 +32,10 @@ skip_tags: true environment: matrix: + - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 + TOOLSET: msvc-9.0 + ADDRMD: 32 + CXXSTD: latest # fake # - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019 # TOOLSET: msvc # TODO: clang-win ??? # ADDRMD: 32,64 From 1be5e116f445119828e7e3489f14cd6ba6084b46 Mon Sep 17 00:00:00 2001 From: denzor200 Date: Sat, 7 Jan 2023 17:01:22 +0600 Subject: [PATCH 4/4] add cxx14 check --- include/boost/pfr/config.hpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/include/boost/pfr/config.hpp b/include/boost/pfr/config.hpp index 63ff47d..8ab6f18 100644 --- a/include/boost/pfr/config.hpp +++ b/include/boost/pfr/config.hpp @@ -8,7 +8,14 @@ #define BOOST_PFR_CONFIG_HPP #pragma once +#if __cplusplus >= 201402L || (defined(_MSC_VER) && defined(_MSVC_LANG) && _MSC_VER > 1900) #include // to get non standard platform macro definitions (__GLIBCXX__ for example) +#endif + +/// \file boost/pfr/config.hpp +/// Contains all the macros that describe Boost.PFR configuration, like BOOST_PFR_ENABLED +/// +/// \note This header file doesn't require C++14 Standard and supports all C++ compilers, even pre C++14 compilers (C++11, C++03...). // Reminder: // * MSVC++ 14.2 _MSC_VER == 1927 <- Loophole is known to work (Visual Studio ????)