On 15/11/19 19:12 +0000, Smith-Rowland, Edward M wrote:
Index: testsuite/24_iterators/headers/iterator/synopsis_c++17.cc
===================================================================
--- testsuite/24_iterators/headers/iterator/synopsis_c++17.cc  (revision 278302)
+++ testsuite/24_iterators/headers/iterator/synopsis_c++17.cc  (working copy)
@@ -89,21 +89,6 @@
  template <class Iterator>
  constexpr reverse_iterator<Iterator> make_reverse_iterator(const Iterator&);

-  template <class Container> class back_insert_iterator;
-
-  template <class Container>
-  back_insert_iterator<Container> back_inserter(Container& x);
-
-  template <class Container> class front_insert_iterator;
-
-  template <class Container>
-  front_insert_iterator<Container> front_inserter(Container& x);
-
-  template <class Container> class insert_iterator;
-
-  template <class Container, class Iterator>
-  insert_iterator<Container> inserter(Container& x, Iterator i);
-
  template <class Iterator> class move_iterator;

  template <class Iterator1, class Iterator2>

This seems wrong ... these are still part of C++17, aren't they?

I think we want to conditionally declare those constexpr so the test
passes in C++20 mode as well e.g.


OK, what I did there was to just remove those tests in synopsis_c++17.cc to a 
new inserters_c++17.cc (which is just run for C++17) and add a 
inserters_c++20.cc (which is just run for C++20) for the constexpr versions.  
So I think everything should be checked with the right version.  The C++17 
inserters are still checked for C++17.

Oh I see the problem, it's because I made synopsis_c++20.cc include
synopsis_c++17.cc because I was lazy.

How about leaving those declarations in synopsis_c++17.cc but
guarding them with #if __cplusplus == 201703L and then adding the
constexpr versions of them in synopsis_c++20.cc ?

I think we should also add { target c++17_only } to synopsis_c++17.cc
(which should have had a target selector anyway).

Reply via email to