├── .gitignore ├── .gitmodules ├── README.md ├── drafting ├── MockingFrameworksConsideredHarmful.pdf ├── MockingFrameworksConsideredHarmful.tex ├── N2621.html ├── N2829.html ├── Nxxxx_smart_pointers_landscape.pdf ├── Nxxxx_smart_pointers_landscape.tex ├── P2968Rx_ignore.md ├── README.md ├── accepted_or_obsolete │ ├── D3188_revision_of_N3113.html │ ├── D3188_with_resurrected_launch-any-policy.html │ ├── D3189_revision_of_n3122.html │ ├── D3269.html │ ├── D3468_revision_of_N3402_UDLsuffixes.pdf │ ├── D3468_revision_of_N3402_UDLsuffixes.tex │ ├── LWG1364_resolved.txt │ ├── LWG1368_resolution.html │ ├── LWG1369_new_resolution.txt │ ├── N3189.html │ ├── N3402_UDLsuffixes.pdf │ ├── N3402_UDLsuffixes.tex │ ├── N3468.pdf │ ├── N3468.tex │ ├── N3531.pdf │ ├── N3531.tex │ ├── N3642.pdf │ ├── N3642.tex │ ├── N3660.pdf │ ├── N3660.tex │ ├── N3779-complex_literals.pdf │ ├── N3779-complex_literals.tex │ ├── N3802-apply_tuple.pdf │ ├── N3802-apply_tuple.tex │ ├── N3829-apply_tupleV2.pdf │ ├── N3829-apply_tupleV2.tex │ ├── N3830_scoped_resource.pdf │ ├── N3830_scoped_resource.tex │ ├── N3915-apply_tupleV3.pdf │ ├── N3915-apply_tupleV3.tex │ ├── N3949_scope_guard_unique_resource_v3.pdf │ ├── N3949_scope_guard_unique_resource_v3.tex │ ├── N4069.html │ ├── N4187.html │ ├── N4189_scope_exit_unique_resource_v4.pdf │ ├── N4189_scope_exit_unique_resource_v4.tex │ ├── P2264R7-assert.md │ ├── p0053r3_pablo_osyncstream.html │ ├── p0053r5_osyncstream (original).pdf │ ├── p0053r6_osyncstream (1)_commentsABQ.pdf │ ├── p0053r7_osyncstream.pdf │ ├── p0053r7_osyncstream.tex │ ├── p0616r0_move_for_accumulators.pdf │ └── p0616r0_move_for_accumulators.tex ├── cleanlatex.sh ├── cpppapers.bib ├── d1906r0_assignmentopslie.pdf ├── d1906r0_assignmentopslie.tex ├── dXXXXr0_SafeAndSaneCplusplusClasses.pdf ├── dXXXXr0_SafeAndSaneCplusplusClasses.tex ├── html_contents ├── html_outline ├── layout.tex ├── macros.tex ├── nodiscard_for_the_standard_library.md ├── other │ ├── ReSYCLatorSchemaSimple.png │ ├── ReSYCLatorSchemaSimpleAbstractTool.png │ ├── ResultSchemaSimple.png │ ├── SimpleArchitectureCRITTER.png │ ├── SimpleArchitectureNsight.png │ ├── articleStauber.bib │ ├── articleStauber_DHCCPP19.pdf │ ├── articleStauber_DHCCPP19.tex │ ├── comment.cut │ ├── cuda-main-a.cpp │ ├── cuda-main.cpp │ ├── cuda-matrix-call.cpp │ ├── cudadecl.cpp │ ├── cudamatrixMultiplication.cu │ ├── cudamult.cpp │ ├── custom_commands.tex │ ├── invoke-example.cpp │ ├── sycl-main-a.cpp │ ├── sycl-main-init.cpp │ ├── sycl-matrix-main.cpp │ ├── sycl-submit.cpp │ ├── sycldecl1.cpp │ ├── sycldecl2.cpp │ ├── syclmatrixMultiplication.cpp │ └── syclmult.cpp ├── p0052r10_scope_exit_unique_resource.pdf ├── p0052r10_scope_exit_unique_resource.tex ├── p0407r2_allocator_stringbuf.pdf ├── p0407r2_allocator_stringbuf.tex ├── p0408r7_stringview_stringbuf.pdf ├── p0408r7_stringview_stringbuf.tex ├── p0448r4_spanstreams.pdf ├── p0448r4_spanstreams.tex ├── p0647r1_scale_for_ratio.pdf ├── p0647r1_scale_for_ratio.tex ├── p0753r2_osyncstream_manipulators.pdf ├── p0753r2_osyncstream_manipulators.tex ├── p0984R0_APRIL_FOOL.pdf ├── p0984R0_APRIL_FOOL.tex ├── p1410r0_remove_strstream.pdf ├── p1410r0_remove_strstream.tex ├── p1411r0_reconsider_p0052.tex ├── p1412r0_User_defined_special_members_for_safety.pdf ├── p1412r0_User_defined_special_members_for_safety.tex ├── p1771r1_nodiscard_for_constructors.pdf ├── p1771r1_nodiscard_for_constructors.tex ├── pXXXXr0_towards_std_units.pdf ├── pXXXXr0_towards_std_units.tex ├── rejected │ ├── N3974_polymorphic_deleter.pdf │ ├── N3974_polymorphic_deleter.tex │ ├── p0506r2_stringview_parameters.pdf │ └── p0506r2_stringview_parameters.tex ├── styles.tex └── tables.tex ├── presentations ├── P2264-presentation.md ├── Pres3974.pdf ├── generated.md ├── include.awk ├── isocpp.xml ├── reveal.js ├── sommerlad2019_special_member_functions.key ├── sommerlad2019_special_member_functions.pdf └── toreveal.sh └── workspace ├── AprilFool2018 ├── .cproject ├── .project ├── AprilFool2018.xml ├── LICENSE.txt ├── cute │ ├── cute.h │ ├── cute_base.h │ ├── cute_counting_listener.h │ ├── cute_data_driven.h │ ├── cute_demangle.h │ ├── cute_deprecated.h │ ├── cute_determine_library.h │ ├── cute_determine_traits.h │ ├── cute_determine_version.h │ ├── cute_diff_values.h │ ├── cute_equals.h │ ├── cute_integer_sequence.h │ ├── cute_listener.h │ ├── cute_range.h │ ├── cute_relops.h │ ├── cute_repeated_test.h │ ├── cute_runner.h │ ├── cute_suite.h │ ├── cute_suite_test.h │ ├── cute_test.h │ ├── cute_test_incarnate.h │ ├── cute_testmember.h │ ├── cute_throws.h │ ├── cute_to_string.h │ ├── cute_version.h │ ├── cute_xml_file.h │ ├── ide_listener.h │ ├── ostream_listener.h │ └── xml_listener.h └── src │ ├── Test.cpp │ └── april_fool.h ├── ES.46.checker_test ├── .cproject ├── .project └── src │ └── ES.46.checker_test.cpp ├── Operators ├── .cproject ├── .project ├── Operators.xml ├── cute │ ├── cute.h │ ├── cute_base.h │ ├── cute_counting_listener.h │ ├── cute_data_driven.h │ ├── cute_demangle.h │ ├── cute_deprecated.h │ ├── cute_determine_library.h │ ├── cute_determine_traits.h │ ├── cute_determine_version.h │ ├── cute_diff_values.h │ ├── cute_equals.h │ ├── cute_integer_sequence.h │ ├── cute_listener.h │ ├── cute_range.h │ ├── cute_relops.h │ ├── cute_repeated_test.h │ ├── cute_runner.h │ ├── cute_suite.h │ ├── cute_suite_test.h │ ├── cute_test.h │ ├── cute_test_incarnate.h │ ├── cute_testmember.h │ ├── cute_throws.h │ ├── cute_to_string.h │ ├── cute_version.h │ ├── cute_xml_file.h │ ├── gpl.txt │ ├── ide_listener.h │ ├── lgpl.txt │ ├── ostream_listener.h │ └── xml_listener.h └── src │ └── Test.cpp ├── P0052_scope_exit ├── .cproject ├── .project ├── P0052_scope_exit.xml ├── README.md ├── cute │ ├── cute.h │ ├── cute_base.h │ ├── cute_counting_listener.h │ ├── cute_data_driven.h │ ├── cute_demangle.h │ ├── cute_deprecated.h │ ├── cute_determine_library.h │ ├── cute_determine_traits.h │ ├── cute_determine_version.h │ ├── cute_diff_values.h │ ├── cute_equals.h │ ├── cute_integer_sequence.h │ ├── cute_listener.h │ ├── cute_range.h │ ├── cute_relops.h │ ├── cute_repeated_test.h │ ├── cute_runner.h │ ├── cute_suite.h │ ├── cute_suite_test.h │ ├── cute_test.h │ ├── cute_test_incarnate.h │ ├── cute_testmember.h │ ├── cute_throws.h │ ├── cute_to_string.h │ ├── cute_version.h │ ├── cute_xml_file.h │ ├── ide_listener.h │ ├── ostream_listener.h │ ├── tap_listener.h │ └── xml_listener.h ├── demo_hello.txt └── src │ ├── Test.cpp │ ├── _scope_guard_common.h │ ├── license.txt │ ├── scope_exit.h │ └── unique_resource.h ├── Psst ├── .cproject ├── .project ├── Psst.xml ├── cute │ ├── cute.h │ ├── cute_base.h │ ├── cute_counting_listener.h │ ├── cute_data_driven.h │ ├── cute_demangle.h │ ├── cute_deprecated.h │ ├── cute_determine_library.h │ ├── cute_determine_traits.h │ ├── cute_determine_version.h │ ├── cute_diff_values.h │ ├── cute_equals.h │ ├── cute_integer_sequence.h │ ├── cute_listener.h │ ├── cute_range.h │ ├── cute_relops.h │ ├── cute_repeated_test.h │ ├── cute_runner.h │ ├── cute_suite.h │ ├── cute_suite_test.h │ ├── cute_test.h │ ├── cute_test_incarnate.h │ ├── cute_testmember.h │ ├── cute_throws.h │ ├── cute_to_string.h │ ├── cute_version.h │ ├── cute_xml_file.h │ ├── ide_listener.h │ ├── ostream_listener.h │ └── xml_listener.h └── src │ ├── Test.cpp │ └── psst.h ├── SaneAndSafeExamples ├── .cproject ├── .project ├── SaneAndSafeExamples.xml ├── cute │ ├── cute.h │ ├── cute_base.h │ ├── cute_counting_listener.h │ ├── cute_data_driven.h │ ├── cute_demangle.h │ ├── cute_deprecated.h │ ├── cute_determine_library.h │ ├── cute_determine_traits.h │ ├── cute_determine_version.h │ ├── cute_diff_values.h │ ├── cute_equals.h │ ├── cute_integer_sequence.h │ ├── cute_listener.h │ ├── cute_range.h │ ├── cute_relops.h │ ├── cute_repeated_test.h │ ├── cute_runner.h │ ├── cute_suite.h │ ├── cute_suite_test.h │ ├── cute_test.h │ ├── cute_test_incarnate.h │ ├── cute_testmember.h │ ├── cute_throws.h │ ├── cute_to_string.h │ ├── cute_version.h │ ├── cute_xml_file.h │ ├── ide_listener.h │ ├── ostream_listener.h │ ├── tap_listener.h │ └── xml_listener.h └── src │ └── Test.cpp ├── Test_basic_osyncstream ├── .cproject ├── .project ├── .suppressed ├── README.md ├── Test_basic_osyncstream.xml ├── cute │ ├── cute.h │ ├── cute_base.h │ ├── cute_counting_listener.h │ ├── cute_data_driven.h │ ├── cute_demangle.h │ ├── cute_determine_library.h │ ├── cute_determine_traits.h │ ├── cute_determine_version.h │ ├── cute_diff_values.h │ ├── cute_equals.h │ ├── cute_listener.h │ ├── cute_relops.h │ ├── cute_repeated_test.h │ ├── cute_runner.h │ ├── cute_suite.h │ ├── cute_suite_test.h │ ├── cute_test.h │ ├── cute_test_incarnate.h │ ├── cute_testmember.h │ ├── cute_throws.h │ ├── cute_to_string.h │ ├── cute_version.h │ ├── cute_xml_file.h │ ├── gpl.txt │ ├── ide_listener.h │ ├── lgpl.txt │ ├── ostream_listener.h │ └── xml_listener.h └── src │ ├── Test.cpp │ ├── globalstreambuflocks.cpp │ ├── globalstreambuflocks.h │ └── syncstream.h ├── Test_basic_spanbuf ├── .cproject ├── .project ├── Test_basic_spanbuf.xml ├── cute │ ├── cute.h │ ├── cute_base.h │ ├── cute_counting_listener.h │ ├── cute_data_driven.h │ ├── cute_demangle.h │ ├── cute_determine_library.h │ ├── cute_determine_traits.h │ ├── cute_determine_version.h │ ├── cute_diff_values.h │ ├── cute_equals.h │ ├── cute_listener.h │ ├── cute_range.h │ ├── cute_relops.h │ ├── cute_repeated_test.h │ ├── cute_runner.h │ ├── cute_suite.h │ ├── cute_suite_test.h │ ├── cute_test.h │ ├── cute_test_incarnate.h │ ├── cute_testmember.h │ ├── cute_throws.h │ ├── cute_to_string.h │ ├── cute_version.h │ ├── cute_xml_file.h │ ├── gpl.txt │ ├── ide_listener.h │ ├── lgpl.txt │ ├── ostream_listener.h │ └── xml_listener.h └── src │ ├── TestSpanstreams.cpp │ ├── span.h │ ├── spanstream.cpp │ └── spanstream.h ├── Test_basic_stringbuf_efficient ├── .cproject ├── .gitignore ├── .project ├── Test_basic_stringbuf_efficient.xml ├── cute │ ├── cute.h │ ├── cute_base.h │ ├── cute_counting_listener.h │ ├── cute_data_driven.h │ ├── cute_demangle.h │ ├── cute_deprecated.h │ ├── cute_determine_library.h │ ├── cute_determine_traits.h │ ├── cute_determine_version.h │ ├── cute_diff_values.h │ ├── cute_equals.h │ ├── cute_integer_sequence.h │ ├── cute_listener.h │ ├── cute_range.h │ ├── cute_relops.h │ ├── cute_repeated_test.h │ ├── cute_runner.h │ ├── cute_suite.h │ ├── cute_suite_test.h │ ├── cute_test.h │ ├── cute_test_incarnate.h │ ├── cute_testmember.h │ ├── cute_throws.h │ ├── cute_to_string.h │ ├── cute_version.h │ ├── cute_xml_file.h │ ├── ide_listener.h │ ├── ostream_listener.h │ └── xml_listener.h ├── ori_for_diff │ ├── basic_string.h │ ├── sstream.ori │ └── string └── src │ ├── FixedAllocator.h │ ├── Testp0407-p0408-efficientStringstreams.cpp │ ├── basic_string.h │ ├── basic_string.h.urg │ ├── bits │ └── sstream.tcc │ ├── sstream │ ├── string │ └── string.urg ├── Test_clang_p0407_p0408 ├── .cproject ├── .project ├── Test_clang_p0407_p0408.xml ├── cute │ ├── cute.h │ ├── cute_base.h │ ├── cute_counting_listener.h │ ├── cute_data_driven.h │ ├── cute_demangle.h │ ├── cute_deprecated.h │ ├── cute_determine_library.h │ ├── cute_determine_traits.h │ ├── cute_determine_version.h │ ├── cute_diff_values.h │ ├── cute_equals.h │ ├── cute_integer_sequence.h │ ├── cute_listener.h │ ├── cute_range.h │ ├── cute_relops.h │ ├── cute_repeated_test.h │ ├── cute_runner.h │ ├── cute_suite.h │ ├── cute_suite_test.h │ ├── cute_test.h │ ├── cute_test_incarnate.h │ ├── cute_testmember.h │ ├── cute_throws.h │ ├── cute_to_string.h │ ├── cute_version.h │ ├── cute_xml_file.h │ ├── ide_listener.h │ ├── ostream_listener.h │ └── xml_listener.h ├── ori_for_diff │ ├── sstream.ori.h │ └── string.ori.h └── src │ ├── FixedAllocator.h │ ├── Test_clang_p0407-p0408-efficientStringstreams.cpp │ ├── sstream │ └── string ├── UnitsTest ├── .cproject ├── .project ├── cute │ ├── cute.h │ ├── cute_base.h │ ├── cute_counting_listener.h │ ├── cute_data_driven.h │ ├── cute_demangle.h │ ├── cute_deprecated.h │ ├── cute_determine_library.h │ ├── cute_determine_traits.h │ ├── cute_determine_version.h │ ├── cute_diff_values.h │ ├── cute_equals.h │ ├── cute_integer_sequence.h │ ├── cute_listener.h │ ├── cute_range.h │ ├── cute_relops.h │ ├── cute_repeated_test.h │ ├── cute_runner.h │ ├── cute_suite.h │ ├── cute_suite_test.h │ ├── cute_test.h │ ├── cute_test_incarnate.h │ ├── cute_testmember.h │ ├── cute_throws.h │ ├── cute_to_string.h │ ├── cute_version.h │ ├── cute_xml_file.h │ ├── gpl.txt │ ├── ide_listener.h │ ├── lgpl.txt │ ├── ostream_listener.h │ └── xml_listener.h ├── include │ ├── chrono.h │ ├── ratio.h │ └── units.h └── src │ ├── CompileTimeArithmetic.cpp │ ├── CompileTimeArithmetic.h │ ├── Constexpr.cpp │ ├── Constexpr.h │ ├── Test.cpp │ ├── TypeTraits.cpp │ ├── TypeTraits.h │ ├── UnitContainer.cpp │ ├── UnitContainer.h │ ├── UnitConversion.cpp │ ├── UnitConversion.h │ ├── UnitManipulators.cpp │ ├── UnitManipulators.h │ ├── UnitMath.cpp │ ├── UnitMath.h │ └── common_for_tests.h ├── accuscc113 ├── .cproject ├── .project ├── feedback.txt └── src │ └── accuscc113.cpp ├── accuscc113_correct ├── .cproject ├── .project ├── accuscc113_correct.xml ├── cute │ ├── cute.h │ ├── cute_base.h │ ├── cute_counting_listener.h │ ├── cute_data_driven.h │ ├── cute_demangle.h │ ├── cute_deprecated.h │ ├── cute_determine_library.h │ ├── cute_determine_traits.h │ ├── cute_determine_version.h │ ├── cute_diff_values.h │ ├── cute_equals.h │ ├── cute_integer_sequence.h │ ├── cute_listener.h │ ├── cute_range.h │ ├── cute_relops.h │ ├── cute_repeated_test.h │ ├── cute_runner.h │ ├── cute_suite.h │ ├── cute_suite_test.h │ ├── cute_test.h │ ├── cute_test_incarnate.h │ ├── cute_testmember.h │ ├── cute_throws.h │ ├── cute_to_string.h │ ├── cute_version.h │ ├── cute_xml_file.h │ ├── ide_listener.h │ ├── ostream_listener.h │ ├── tap_listener.h │ └── xml_listener.h └── src │ └── Test.cpp ├── antelope_book_strings ├── .cproject ├── .gitignore ├── .project ├── gettimeofday.h ├── stopwatch.h ├── stopwatch11.cpp ├── stopwatch11.h ├── strings.cpp ├── strings.h ├── test_driver.cpp └── test_driver.h ├── antelope_timing_tests ├── .cproject ├── .gitignore ├── .project ├── antelope_timing_tests.xml ├── cute │ ├── cute.h │ ├── cute_base.h │ ├── cute_counting_listener.h │ ├── cute_data_driven.h │ ├── cute_demangle.h │ ├── cute_deprecated.h │ ├── cute_determine_library.h │ ├── cute_determine_traits.h │ ├── cute_determine_version.h │ ├── cute_diff_values.h │ ├── cute_equals.h │ ├── cute_integer_sequence.h │ ├── cute_listener.h │ ├── cute_range.h │ ├── cute_relops.h │ ├── cute_repeated_test.h │ ├── cute_runner.h │ ├── cute_suite.h │ ├── cute_suite_test.h │ ├── cute_test.h │ ├── cute_test_incarnate.h │ ├── cute_testmember.h │ ├── cute_throws.h │ ├── cute_to_string.h │ ├── cute_version.h │ ├── cute_xml_file.h │ ├── gpl.txt │ ├── ide_listener.h │ ├── lgpl.txt │ ├── ostream_listener.h │ └── xml_listener.h └── src │ ├── Test.cpp │ ├── string_functions.cpp │ └── string_functions.h ├── p0053_basic_osyncstreambuf ├── .cproject ├── .project ├── .suppressed ├── README.md ├── Test_basic_osyncstream.xml ├── cute │ ├── cute.h │ ├── cute_base.h │ ├── cute_counting_listener.h │ ├── cute_data_driven.h │ ├── cute_demangle.h │ ├── cute_determine_library.h │ ├── cute_determine_traits.h │ ├── cute_determine_version.h │ ├── cute_diff_values.h │ ├── cute_equals.h │ ├── cute_listener.h │ ├── cute_relops.h │ ├── cute_repeated_test.h │ ├── cute_runner.h │ ├── cute_suite.h │ ├── cute_suite_test.h │ ├── cute_test.h │ ├── cute_test_incarnate.h │ ├── cute_testmember.h │ ├── cute_throws.h │ ├── cute_to_string.h │ ├── cute_version.h │ ├── cute_xml_file.h │ ├── gpl.txt │ ├── ide_listener.h │ ├── lgpl.txt │ ├── ostream_listener.h │ └── xml_listener.h ├── p0053_basic_osyncstreambuf.xml └── src │ ├── Test.cpp │ ├── globalstreambuflocks.cpp │ ├── globalstreambuflocks.h │ └── syncstream.h ├── p0448 ├── .cproject ├── .project ├── cute │ ├── cute.h │ ├── cute_base.h │ ├── cute_counting_listener.h │ ├── cute_data_driven.h │ ├── cute_demangle.h │ ├── cute_deprecated.h │ ├── cute_determine_library.h │ ├── cute_determine_traits.h │ ├── cute_determine_version.h │ ├── cute_diff_values.h │ ├── cute_equals.h │ ├── cute_integer_sequence.h │ ├── cute_listener.h │ ├── cute_range.h │ ├── cute_relops.h │ ├── cute_repeated_test.h │ ├── cute_runner.h │ ├── cute_suite.h │ ├── cute_suite_test.h │ ├── cute_test.h │ ├── cute_test_incarnate.h │ ├── cute_testmember.h │ ├── cute_throws.h │ ├── cute_to_string.h │ ├── cute_version.h │ ├── cute_xml_file.h │ ├── gpl.txt │ ├── ide_listener.h │ ├── lgpl.txt │ ├── ostream_listener.h │ └── xml_listener.h ├── p0448.xml └── src │ ├── TestSpanstreams.cpp │ ├── span.h │ ├── spanstream.cpp │ └── spanstream.h ├── p0506_string_view_params_stdlib ├── .cproject ├── .project ├── cute │ ├── cute.h │ ├── cute_base.h │ ├── cute_counting_listener.h │ ├── cute_data_driven.h │ ├── cute_demangle.h │ ├── cute_deprecated.h │ ├── cute_determine_library.h │ ├── cute_determine_traits.h │ ├── cute_determine_version.h │ ├── cute_diff_values.h │ ├── cute_equals.h │ ├── cute_integer_sequence.h │ ├── cute_listener.h │ ├── cute_range.h │ ├── cute_relops.h │ ├── cute_repeated_test.h │ ├── cute_runner.h │ ├── cute_suite.h │ ├── cute_suite_test.h │ ├── cute_test.h │ ├── cute_test_incarnate.h │ ├── cute_testmember.h │ ├── cute_throws.h │ ├── cute_to_string.h │ ├── cute_version.h │ ├── cute_xml_file.h │ ├── gpl.txt │ ├── ide_listener.h │ ├── lgpl.txt │ ├── ostream_listener.h │ └── xml_listener.h ├── p0506_string_view_params_stdlib.xml └── src │ ├── Test.cpp │ └── bitset.h ├── p0616_perf ├── .cproject ├── .gitignore ├── .project └── src │ └── p0616_perf.cpp ├── p1906_examples ├── .cproject ├── .project └── src │ ├── cexample.c │ ├── memberbinding.cpp │ └── p1906_examples.cpp ├── p2264_test_for_assert_dotdotdot_on_my_machine ├── .cproject ├── .project └── src │ ├── P2264_test_for_assert_dotdotdot_WG14.c │ ├── P2264_test_for_assert_dotdotdot_on_my_machine.cpp │ ├── cassert_gcc │ ├── system_assert_h_BSD.h │ └── system_assert_original.h ├── ratio_quotient ├── .cproject ├── .project ├── cute │ ├── cute.h │ ├── cute_base.h │ ├── cute_counting_listener.h │ ├── cute_data_driven.h │ ├── cute_demangle.h │ ├── cute_deprecated.h │ ├── cute_determine_library.h │ ├── cute_determine_traits.h │ ├── cute_determine_version.h │ ├── cute_diff_values.h │ ├── cute_equals.h │ ├── cute_integer_sequence.h │ ├── cute_listener.h │ ├── cute_range.h │ ├── cute_relops.h │ ├── cute_repeated_test.h │ ├── cute_runner.h │ ├── cute_suite.h │ ├── cute_suite_test.h │ ├── cute_test.h │ ├── cute_test_incarnate.h │ ├── cute_testmember.h │ ├── cute_throws.h │ ├── cute_to_string.h │ ├── cute_version.h │ ├── cute_xml_file.h │ ├── gpl.txt │ ├── ide_listener.h │ ├── lgpl.txt │ ├── ostream_listener.h │ └── xml_listener.h ├── ratio_quotient.xml └── src │ ├── Test.cpp │ ├── ratio.h │ ├── ratio_clang.h │ └── ratio_gcc.h ├── reverseAdapter ├── .cproject ├── .project ├── cute │ ├── cute.h │ ├── cute_base.h │ ├── cute_counting_listener.h │ ├── cute_data_driven.h │ ├── cute_demangle.h │ ├── cute_deprecated.h │ ├── cute_determine_library.h │ ├── cute_determine_traits.h │ ├── cute_determine_version.h │ ├── cute_diff_values.h │ ├── cute_equals.h │ ├── cute_integer_sequence.h │ ├── cute_listener.h │ ├── cute_range.h │ ├── cute_relops.h │ ├── cute_repeated_test.h │ ├── cute_runner.h │ ├── cute_suite.h │ ├── cute_suite_test.h │ ├── cute_test.h │ ├── cute_test_incarnate.h │ ├── cute_testmember.h │ ├── cute_throws.h │ ├── cute_to_string.h │ ├── cute_version.h │ ├── cute_xml_file.h │ ├── ide_listener.h │ ├── ostream_listener.h │ ├── tap_listener.h │ └── xml_listener.h ├── reverseAdapter.xml └── src │ ├── Test.cpp │ └── reverse.h ├── size_type_signed ├── .cproject ├── .project └── src │ └── size_type_signed.cpp ├── test_for_indexer_crash_wiht_gcc701_header ├── .cproject ├── .project ├── cute │ ├── cute.h │ ├── cute_base.h │ ├── cute_counting_listener.h │ ├── cute_data_driven.h │ ├── cute_demangle.h │ ├── cute_deprecated.h │ ├── cute_determine_library.h │ ├── cute_determine_traits.h │ ├── cute_determine_version.h │ ├── cute_diff_values.h │ ├── cute_equals.h │ ├── cute_integer_sequence.h │ ├── cute_listener.h │ ├── cute_range.h │ ├── cute_relops.h │ ├── cute_repeated_test.h │ ├── cute_runner.h │ ├── cute_suite.h │ ├── cute_suite_test.h │ ├── cute_test.h │ ├── cute_test_incarnate.h │ ├── cute_testmember.h │ ├── cute_throws.h │ ├── cute_to_string.h │ ├── cute_version.h │ ├── cute_xml_file.h │ ├── gpl.txt │ ├── ide_listener.h │ ├── lgpl.txt │ ├── ostream_listener.h │ └── xml_listener.h └── src │ └── Test.cpp ├── test_moveability ├── .cproject ├── .project ├── cute │ ├── cute.h │ ├── cute_base.h │ ├── cute_counting_listener.h │ ├── cute_data_driven.h │ ├── cute_demangle.h │ ├── cute_deprecated.h │ ├── cute_determine_library.h │ ├── cute_determine_traits.h │ ├── cute_determine_version.h │ ├── cute_diff_values.h │ ├── cute_equals.h │ ├── cute_integer_sequence.h │ ├── cute_listener.h │ ├── cute_range.h │ ├── cute_relops.h │ ├── cute_repeated_test.h │ ├── cute_runner.h │ ├── cute_suite.h │ ├── cute_suite_test.h │ ├── cute_test.h │ ├── cute_test_incarnate.h │ ├── cute_testmember.h │ ├── cute_throws.h │ ├── cute_to_string.h │ ├── cute_version.h │ ├── cute_xml_file.h │ ├── gpl.txt │ ├── ide_listener.h │ ├── lgpl.txt │ ├── ostream_listener.h │ └── xml_listener.h ├── src │ ├── Test.cpp │ └── fobar.cpp └── test_moveability.xml ├── testfornpe ├── .cproject ├── .project ├── cute │ ├── cute.h │ ├── cute_base.h │ ├── cute_counting_listener.h │ ├── cute_data_driven.h │ ├── cute_demangle.h │ ├── cute_deprecated.h │ ├── cute_determine_library.h │ ├── cute_determine_traits.h │ ├── cute_determine_version.h │ ├── cute_diff_values.h │ ├── cute_equals.h │ ├── cute_integer_sequence.h │ ├── cute_listener.h │ ├── cute_range.h │ ├── cute_relops.h │ ├── cute_repeated_test.h │ ├── cute_runner.h │ ├── cute_suite.h │ ├── cute_suite_test.h │ ├── cute_test.h │ ├── cute_test_incarnate.h │ ├── cute_testmember.h │ ├── cute_throws.h │ ├── cute_to_string.h │ ├── cute_version.h │ ├── cute_xml_file.h │ ├── gpl.txt │ ├── ide_listener.h │ ├── lgpl.txt │ ├── ostream_listener.h │ └── xml_listener.h └── src │ └── Test.cpp ├── teststruct_class_forward ├── .cproject ├── .project ├── cute │ ├── cute.h │ ├── cute_base.h │ ├── cute_counting_listener.h │ ├── cute_data_driven.h │ ├── cute_demangle.h │ ├── cute_deprecated.h │ ├── cute_determine_library.h │ ├── cute_determine_traits.h │ ├── cute_determine_version.h │ ├── cute_diff_values.h │ ├── cute_equals.h │ ├── cute_integer_sequence.h │ ├── cute_listener.h │ ├── cute_range.h │ ├── cute_relops.h │ ├── cute_repeated_test.h │ ├── cute_runner.h │ ├── cute_suite.h │ ├── cute_suite_test.h │ ├── cute_test.h │ ├── cute_test_incarnate.h │ ├── cute_testmember.h │ ├── cute_throws.h │ ├── cute_to_string.h │ ├── cute_version.h │ ├── cute_xml_file.h │ ├── ide_listener.h │ ├── ostream_listener.h │ └── xml_listener.h └── src │ └── Test.cpp ├── testunits_for_indexer_check ├── .cproject ├── .project ├── cute │ ├── cute.h │ ├── cute_base.h │ ├── cute_counting_listener.h │ ├── cute_data_driven.h │ ├── cute_demangle.h │ ├── cute_deprecated.h │ ├── cute_determine_library.h │ ├── cute_determine_traits.h │ ├── cute_determine_version.h │ ├── cute_diff_values.h │ ├── cute_equals.h │ ├── cute_integer_sequence.h │ ├── cute_listener.h │ ├── cute_range.h │ ├── cute_relops.h │ ├── cute_repeated_test.h │ ├── cute_runner.h │ ├── cute_suite.h │ ├── cute_suite_test.h │ ├── cute_test.h │ ├── cute_test_incarnate.h │ ├── cute_testmember.h │ ├── cute_throws.h │ ├── cute_to_string.h │ ├── cute_version.h │ ├── cute_xml_file.h │ ├── gpl.txt │ ├── ide_listener.h │ ├── lgpl.txt │ ├── ostream_listener.h │ └── xml_listener.h └── src │ ├── Test.cpp │ └── units.h └── ttttttttt ├── .cproject ├── .project ├── bla.cpp └── cute ├── cute.h ├── cute_base.h ├── cute_counting_listener.h ├── cute_data_driven.h ├── cute_demangle.h ├── cute_deprecated.h ├── cute_determine_library.h ├── cute_determine_traits.h ├── cute_determine_version.h ├── cute_diff_values.h ├── cute_equals.h ├── cute_integer_sequence.h ├── cute_listener.h ├── cute_range.h ├── cute_relops.h ├── cute_repeated_test.h ├── cute_runner.h ├── cute_suite.h ├── cute_suite_test.h ├── cute_test.h ├── cute_test_incarnate.h ├── cute_testmember.h ├── cute_throws.h ├── cute_to_string.h ├── cute_version.h ├── cute_xml_file.h ├── gpl.txt ├── ide_listener.h ├── lgpl.txt ├── ostream_listener.h └── xml_listener.h /.gitignore: -------------------------------------------------------------------------------- 1 | *.aux 2 | *.bbl 3 | *.blg 4 | *.dvi 5 | *.fdb_latexmk 6 | *.fls 7 | *.glg 8 | *.glo 9 | *.gls 10 | *.idx 11 | *.ilg 12 | *.ind 13 | *.ist 14 | *.lof 15 | *.log 16 | *.lot 17 | *.nav 18 | *.nlo 19 | *.out 20 | *.pdfsync 21 | *.ps 22 | *.snm 23 | *.synctex.gz 24 | *.toc 25 | *.vrb 26 | *.maf 27 | *.mtc 28 | *.mtc0 29 | *.xtr 30 | 31 | .DS_Store 32 | 33 | drafting/ .html 34 | 35 | drafting/N3402_UDLsuffixes.fls 36 | 37 | drafting/D3642.pdf 38 | 39 | drafting/N3xxx-UDLpart2-complex.pdf 40 | 41 | drafting/N3xxx-complex_literals.pdf 42 | 43 | drafting/Nxxxx.pdf 44 | 45 | drafting/NXXXX_N3677.html 46 | 47 | Debug 48 | .metadata/ 49 | .settings/ 50 | *Test.xml 51 | .*.html 52 | 53 | workspace/units-1 54 | drafting/other/PA* 55 | drafting/other/acm* 56 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "drafting/P2413"] 2 | path = drafting/P2413 3 | url = git@github.com:leni536/P2413.git 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | SC22WG21_Papers 2 | =============== 3 | 4 | My submissions to SC22WG21 C++ ISO/IEC standardization group -------------------------------------------------------------------------------- /drafting/MockingFrameworksConsideredHarmful.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PeterSommerlad/SC22WG21_Papers/7f9c58dabea6872f86f7960157e2ca38880e14cb/drafting/MockingFrameworksConsideredHarmful.pdf -------------------------------------------------------------------------------- /drafting/Nxxxx_smart_pointers_landscape.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PeterSommerlad/SC22WG21_Papers/7f9c58dabea6872f86f7960157e2ca38880e14cb/drafting/Nxxxx_smart_pointers_landscape.pdf -------------------------------------------------------------------------------- /drafting/README.md: -------------------------------------------------------------------------------- 1 | My current SC22 WG 21 papers in flight 2 | ====================================== 3 | 4 | see subfolder for accepted or rejected stuff. 5 | 6 | feel free to ask about the papers. 7 | 8 | You can retrieve the official last mailing revision using https://wg21.link/papernumber 9 | 10 | Peter Sommerlad. 11 | -------------------------------------------------------------------------------- /drafting/accepted_or_obsolete/D3189_revision_of_n3122.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PeterSommerlad/SC22WG21_Papers/7f9c58dabea6872f86f7960157e2ca38880e14cb/drafting/accepted_or_obsolete/D3189_revision_of_n3122.html -------------------------------------------------------------------------------- /drafting/accepted_or_obsolete/D3468_revision_of_N3402_UDLsuffixes.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PeterSommerlad/SC22WG21_Papers/7f9c58dabea6872f86f7960157e2ca38880e14cb/drafting/accepted_or_obsolete/D3468_revision_of_N3402_UDLsuffixes.pdf -------------------------------------------------------------------------------- /drafting/accepted_or_obsolete/LWG1364_resolved.txt: -------------------------------------------------------------------------------- 1 | 1364. [FCD] It is not clear how exception_ptr is synchronized 2 | 3 | Section: 18.8.6 [propagation] Status: NAD Submitter: Switzerland Opened: 2010-08-25 Last modified: 2010-11-11 4 | 5 | View other active issues in [propagation]. 6 | 7 | View all other issues in [propagation]. 8 | 9 | View all issues with Open status. 10 | 11 | Discussion: 12 | 13 | Addresses CH-19 14 | 15 | It is not clear how exception_ptr is synchronized. 16 | 17 | [ Resolution proposed by ballot comment ] 18 | 19 | Make clear that accessing in different threads multiple exception_ptr objects that all refer to the same exception introduce a race. 20 | 21 | [ Batavia 2010-11-11] 22 | 23 | 17.6.4.8 guarantees that the reference counter, if any, is synchronized. 24 | 25 | proposed resolution to 1369 resolves also this issue for rethrow. 26 | 27 | Proposed resolution: -------------------------------------------------------------------------------- /drafting/accepted_or_obsolete/LWG1368_resolution.html: -------------------------------------------------------------------------------- 1 |
Section: 18.8.5 [uncaught] Status: Immediate 4 | Submitter: BSI Opened: 2010-08-25 Last modified: 2010-10-27
5 | 6 |View all issues with Open status.
7 |Discussion:
8 |Addresses GB-73
9 |10 | The thread safety std::uncaught_exception() and the 11 | result of the function when multiple threads throw 12 | exceptions at the same time are unspecified. To make the 13 | function safe to use in the presence of exceptions in 14 | multiple threads the specification needs to be updated. 15 |
16 | 17 |[ 18 | Resolution proposed by ballot comment 19 | ]
20 | 21 |22 | Update this clause to support safe calls from 23 | multiple threads without placing synchronization 24 | requirements on the user. 25 |
26 | 27 | 28 | 29 |Proposed resolution:
30 | 31 |change 18.8.5p1 [uncaught] as follows:
32 |
33 | Returns: true after the current thread has initialized initializing
34 | an exception object (15.1) until a handler for the exception (including unexpected() or terminate())
35 | is activated (15.3). [ Note: This includes stack unwinding (15.2). - end note ]
36 |