Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
- Build Status
Buildable 39442 Build 39460: arc lint + arc unit
Event Timeline
__libcpp_is_constant_evaluated returns false in C++03 mode but, it still won't work as a template argument. Putting #ifs around it will probably work, though.
libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp | ||
---|---|---|
21 | It seems like these were already here. I think it would be really great if we could instead have a single test. For all these algorithms, what I would ideally like is just to change the return type to bool, add constexpr, and return true at the end. Then we can static_assert that test succeeds. If assert fails in the test, the static_assert will also fail. Maybe we can even develop a macro to wrap these functions and run them in both constexpr mode and normally. |
libcxx/include/algorithm | ||
---|---|---|
1717 | If I'm not mistaken, __libcpp_is_constant_evaluated() is always true here, because the result is always required to be a constant expression (since it's a NTTP). This is one of the many pitfalls of this function. Instead,I think you need to branch in the main copy() function, like so: template <class _InputIterator, class _OutputIterator> inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 _OutputIterator copy(_InputIterator __first, _InputIterator __last, _OutputIterator __result) { if (__libcpp_constant_evaluated()) { return _VSTD::__copy_naive(__unwrap_iter(__first), __unwrap_iter(__last), __unwrap_iter(__result)); } else { return _VSTD::__copy(__unwrap_iter(__first), __unwrap_iter(__last), __unwrap_iter(__result)); } } Or something along those lines, you get the point. | |
libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp | ||
21 | We definitely need to run the tests in both runtime and compile-time worlds, since those exercise completely different things. Not only the code paths can be different (via is_constant_evaluated), but we also need to make sure the runtime code generated by the compiler agrees with the compile-time evaluation. So, running the tests in both assert and static_assert is needed IMO. I don't think a lot of changes are required, because assert(condition) should be valid at compile-time if condition is true. I suggest something like the following: #define ASSERT_CONSTEXPR(...) static_assert(((__VA_ARGS__),void(),true), "") Then, this can be called as ASSERT_CONSTEXPR(test<input_iterator<const int*>, output_iterator<int*> >()); without having to change test<...>() at all, I think. We could even go as far as to add ASSERT_CONSTEXPR_AFTER_CXX17(...), etc. |
libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp | ||
---|---|---|
21 | For now I've moved all of the cases from main into a test() function and called test(); and static_assert(test()); Alternatively, we could maybe also add macro which does something ilke: #if TEST_STD_VER > 17 #define TEST_RUN_BOTH_AFTER_CXX17(...) (__VA_ARGS__); static_assert((__VA_ARGS__),void(),true) #else #define TEST_RUN_BOTH_AFTER_CXX17(...) (__VA_ARGS__); #endif with which we could do something like: TEST_RUN_BOTH_AFTER_CXX17(test<input_iterator<const int*>, output_iterator<int*> >()); TEST_RUN_BOTH_AFTER_CXX17(test<input_iterator<const int*>, input_iterator<int*> >()); ... The simplicity of the current approach seems fitting with the simplicity of the test suite of libc++ in general, but I don't know. I also don't know what a good name for TEST_RUN_BOTH_AFTER_CXX17 would be 😕 |
Looks good, except for the duplicated test() functions. I'd also like to have a short discussion about how to test this (and more importantly the lack of regression w.r.t. codegen). Apart from that, I think this is good to go.
libcxx/include/algorithm | ||
---|---|---|
1734 | This LGTM. However, one thing I just thought about is that we don't really have a way of making sure that libc++ is calling the right code at runtime vs compile-time. What I mean is that with the introduction of __libcpp_is_constant_evaluated(), we're adding a new code path that is equivalent but slower. Given some programming error (such as the previous way of dispatching on __libcpp_is_constant_evaluated(), we could conceivably end up in a situation where we always fall back to the slower (but still correct) implementation, and our tests wouldn't currently catch that. I can't think of a way to test this at the moment, however I thought I'd at least mention it because it's a new class of potential bugs we're introducing (and against which we don't have good defence). Edit: Since this is really a property of the code generation, perhaps one way we could test this is by having some kind of .sh.cpp test that checks the codegen of a function calling std::copy, and confirming that for the appropriate iterator types it generates a call to memcpy. This would go in test/libcxx (since it's a property of our implementation only). Thoughts? | |
libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp | ||
23 | You seem to have two functions called test()? |
libcxx/include/algorithm | ||
---|---|---|
1734 | @ldionne I took a stab at a approach that I think resembles count_new.h: https://reviews.llvm.org/differential/diff/225552/ The basic idea is to have an ExecutionTracker which can collect information about
#ifdef _LIBCPP_TESTING_EXECUTION_PATH globalExecutionPathTracker.fastPathCalled(); #endif const size_t __n = static_cast<size_t>(__last - __first); if (__n > 0) _VSTD::memmove(__result, __first, __n * sizeof(_Up)); return __result + __n; but perhaps that's not so different from other conditionals.
#define _LIBCPP_TESTING_EXECUTION_PATH #include "track_execution_path.h" #include <algorithm> but perhaps this is not so different from random_shuffle.cxx1z.pass.cpp which does: #define _LIBCPP_ENABLE_CXX17_REMOVED_RANDOM_SHUFFLE #define _LIBCPP_DISABLE_DEPRECATION_WARNINGS #include <algorithm> |
This breaks testing on Fedora 31 (x86_64). Is there something I'm doing wrong?
FAIL: libc++ :: std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp (50801 of 59142) ******************** TEST 'libc++ :: std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp' FAILED ******************** Command: ['/usr/bin/clang++', '-o', '/tmp/_update_lc/r/projects/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/Output/copy_backward.pass.cpp.o', '-x', 'c++', '/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp', '-c', '-v', '-ftemplate-depth=270', '-Werror=thread-safety', '-std=c++2a', '-include', '/home/dave/s/lp/libcxx/test/support/nasty_macros.h', '-nostdinc++', '-I/home/dave/s/lp/libcxx/include', '-I/tmp/_update_lc/r/projects/libcxx/include/c++build', '-D__STDC_FORMAT_MACROS', '-D__STDC_LIMIT_MACROS', '-D__STDC_CONSTANT_MACROS', '-I/home/dave/s/lp/libcxx/test/support', '-DLIBCXX_FILESYSTEM_STATIC_TEST_ROOT="/home/dave/s/lp/libcxx/test/std/input.output/filesystems/Inputs/static_test_env"', '-DLIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT="/tmp/_update_lc/r/projects/libcxx/test/filesystem/Output/dynamic_env"', '-DLIBCXX_FILESYSTEM_DYNAMIC_TEST_HELPER="/usr/bin/python /home/dave/s/lp/libcxx/test/support/filesystem_dynamic_test_helper.py"', '-D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER', '-Wall', '-Wextra', '-Werror', '-Wuser-defined-warnings', '-Wshadow', '-Wno-unused-command-line-argument', '-Wno-attributes', '-Wno-pessimizing-move', '-Wno-c++11-extensions', '-Wno-user-defined-literals', '-Wno-noexcept-type', '-Wsign-compare', '-Wunused-variable', '-Wunused-parameter', '-Wunreachable-code', '-c'] Exit Code: 1 Standard Error: -- clang version 9.0.0 (Fedora 9.0.0-1.fc31) Target: x86_64-unknown-linux-gnu Thread model: posix InstalledDir: /usr/bin Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-redhat-linux/9 Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/9 Selected GCC installation: /usr/bin/../lib/gcc/x86_64-redhat-linux/9 Candidate multilib: .;@m64 Candidate multilib: 32;@m32 Selected multilib: .;@m64 "/usr/bin/clang-9" -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -discard-value-names -main-file-name copy_backward.pass.cpp -mrelocation-model static -mthread-model posix -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables -fuse-init-array -target-cpu x86-64 -dwarf-column-info -debugger-tuning=gdb -v -coverage-notes-file /tmp/_update_lc/r/projects/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/Output/copy_backward.pass.cpp.gcno -nostdinc++ -resource-dir /usr/lib64/clang/9.0.0 -include /home/dave/s/lp/libcxx/test/support/nasty_macros.h -I /home/dave/s/lp/libcxx/include -I /tmp/_update_lc/r/projects/libcxx/include/c++build -D __STDC_FORMAT_MACROS -D __STDC_LIMIT_MACROS -D __STDC_CONSTANT_MACROS -I /home/dave/s/lp/libcxx/test/support -D "LIBCXX_FILESYSTEM_STATIC_TEST_ROOT=\"/home/dave/s/lp/libcxx/test/std/input.output/filesystems/Inputs/static_test_env\"" -D "LIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT=\"/tmp/_update_lc/r/projects/libcxx/test/filesystem/Output/dynamic_env\"" -D "LIBCXX_FILESYSTEM_DYNAMIC_TEST_HELPER=\"/usr/bin/python /home/dave/s/lp/libcxx/test/support/filesystem_dynamic_test_helper.py\"" -D _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER -internal-isystem /usr/local/include -internal-isystem /usr/lib64/clang/9.0.0/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -Werror=thread-safety -Wall -Wextra -Werror -Wuser-defined-warnings -Wshadow -Wno-unused-command-line-argument -Wno-attributes -Wno-pessimizing-move -Wno-c++11-extensions -Wno-user-defined-literals -Wno-noexcept-type -Wsign-compare -Wunused-variable -Wunused-parameter -Wunreachable-code -std=c++2a -fdeprecated-macro -fdebug-compilation-dir /tmp/_update_lc/r/projects/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy -ftemplate-depth 270 -ferror-limit 19 -fmessage-length 0 -fno-implicit-modules -fobjc-runtime=gcc -fcxx-exceptions -fexceptions -fdiagnostics-show-option -faddrsig -o /tmp/_update_lc/r/projects/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/Output/copy_backward.pass.cpp.o -x c++ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp clang -cc1 version 9.0.0 based upon LLVM 9.0.0 default target x86_64-unknown-linux-gnu ignoring nonexistent directory "/include" #include "..." search starts here: #include <...> search starts here: /home/dave/s/lp/libcxx/include /tmp/_update_lc/r/projects/libcxx/include/c++build /home/dave/s/lp/libcxx/test/support /usr/local/include /usr/lib64/clang/9.0.0/include /usr/include End of search list. /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp:28:9: error: variables defined in a constexpr function must be initialized int ia[N]; ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp:42:5: error: no matching function for call to 'test_copy_backward' test_copy_backward<bidirectional_iterator<const int*>, bidirectional_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp:25:1: note: candidate template ignored: substitution failure [with InIter = bidirectional_iterator<const int *>, OutIter = bidirectional_iterator<int *>] test_copy_backward() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp:43:5: error: no matching function for call to 'test_copy_backward' test_copy_backward<bidirectional_iterator<const int*>, random_access_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp:25:1: note: candidate template ignored: substitution failure [with InIter = bidirectional_iterator<const int *>, OutIter = random_access_iterator<int *>] test_copy_backward() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp:44:5: error: no matching function for call to 'test_copy_backward' test_copy_backward<bidirectional_iterator<const int*>, int*>(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp:25:1: note: candidate template ignored: substitution failure [with InIter = bidirectional_iterator<const int *>, OutIter = int *] test_copy_backward() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp:46:5: error: no matching function for call to 'test_copy_backward' test_copy_backward<random_access_iterator<const int*>, bidirectional_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp:25:1: note: candidate template ignored: substitution failure [with InIter = random_access_iterator<const int *>, OutIter = bidirectional_iterator<int *>] test_copy_backward() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp:47:5: error: no matching function for call to 'test_copy_backward' test_copy_backward<random_access_iterator<const int*>, random_access_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp:25:1: note: candidate template ignored: substitution failure [with InIter = random_access_iterator<const int *>, OutIter = random_access_iterator<int *>] test_copy_backward() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp:48:5: error: no matching function for call to 'test_copy_backward' test_copy_backward<random_access_iterator<const int*>, int*>(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp:25:1: note: candidate template ignored: substitution failure [with InIter = random_access_iterator<const int *>, OutIter = int *] test_copy_backward() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp:50:5: error: no matching function for call to 'test_copy_backward' test_copy_backward<const int*, bidirectional_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp:25:1: note: candidate template ignored: substitution failure [with InIter = const int *, OutIter = bidirectional_iterator<int *>] test_copy_backward() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp:51:5: error: no matching function for call to 'test_copy_backward' test_copy_backward<const int*, random_access_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp:25:1: note: candidate template ignored: substitution failure [with InIter = const int *, OutIter = random_access_iterator<int *>] test_copy_backward() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp:52:5: error: no matching function for call to 'test_copy_backward' test_copy_backward<const int*, int*>(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp:25:1: note: candidate template ignored: substitution failure [with InIter = const int *, OutIter = int *] test_copy_backward() ^ 10 errors generated. -- Compilation failed unexpectedly! ******************** Testing: 0.. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80 FAIL: libc++ :: std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp (50804 of 59142) ******************** TEST 'libc++ :: std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp' FAILED ******************** Command: ['/usr/bin/clang++', '-o', '/tmp/_update_lc/r/projects/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/Output/copy.pass.cpp.o', '-x', 'c++', '/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp', '-c', '-v', '-ftemplate-depth=270', '-Werror=thread-safety', '-std=c++2a', '-include', '/home/dave/s/lp/libcxx/test/support/nasty_macros.h', '-nostdinc++', '-I/home/dave/s/lp/libcxx/include', '-I/tmp/_update_lc/r/projects/libcxx/include/c++build', '-D__STDC_FORMAT_MACROS', '-D__STDC_LIMIT_MACROS', '-D__STDC_CONSTANT_MACROS', '-I/home/dave/s/lp/libcxx/test/support', '-DLIBCXX_FILESYSTEM_STATIC_TEST_ROOT="/home/dave/s/lp/libcxx/test/std/input.output/filesystems/Inputs/static_test_env"', '-DLIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT="/tmp/_update_lc/r/projects/libcxx/test/filesystem/Output/dynamic_env"', '-DLIBCXX_FILESYSTEM_DYNAMIC_TEST_HELPER="/usr/bin/python /home/dave/s/lp/libcxx/test/support/filesystem_dynamic_test_helper.py"', '-D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER', '-Wall', '-Wextra', '-Werror', '-Wuser-defined-warnings', '-Wshadow', '-Wno-unused-command-line-argument', '-Wno-attributes', '-Wno-pessimizing-move', '-Wno-c++11-extensions', '-Wno-user-defined-literals', '-Wno-noexcept-type', '-Wsign-compare', '-Wunused-variable', '-Wunused-parameter', '-Wunreachable-code', '-c'] Exit Code: 1 Standard Error: -- clang version 9.0.0 (Fedora 9.0.0-1.fc31) Target: x86_64-unknown-linux-gnu Thread model: posix InstalledDir: /usr/bin Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-redhat-linux/9 Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/9 Selected GCC installation: /usr/bin/../lib/gcc/x86_64-redhat-linux/9 Candidate multilib: .;@m64 Candidate multilib: 32;@m32 Selected multilib: .;@m64 "/usr/bin/clang-9" -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -discard-value-names -main-file-name copy.pass.cpp -mrelocation-model static -mthread-model posix -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables -fuse-init-array -target-cpu x86-64 -dwarf-column-info -debugger-tuning=gdb -v -coverage-notes-file /tmp/_update_lc/r/projects/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/Output/copy.pass.cpp.gcno -nostdinc++ -resource-dir /usr/lib64/clang/9.0.0 -include /home/dave/s/lp/libcxx/test/support/nasty_macros.h -I /home/dave/s/lp/libcxx/include -I /tmp/_update_lc/r/projects/libcxx/include/c++build -D __STDC_FORMAT_MACROS -D __STDC_LIMIT_MACROS -D __STDC_CONSTANT_MACROS -I /home/dave/s/lp/libcxx/test/support -D "LIBCXX_FILESYSTEM_STATIC_TEST_ROOT=\"/home/dave/s/lp/libcxx/test/std/input.output/filesystems/Inputs/static_test_env\"" -D "LIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT=\"/tmp/_update_lc/r/projects/libcxx/test/filesystem/Output/dynamic_env\"" -D "LIBCXX_FILESYSTEM_DYNAMIC_TEST_HELPER=\"/usr/bin/python /home/dave/s/lp/libcxx/test/support/filesystem_dynamic_test_helper.py\"" -D _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER -internal-isystem /usr/local/include -internal-isystem /usr/lib64/clang/9.0.0/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -Werror=thread-safety -Wall -Wextra -Werror -Wuser-defined-warnings -Wshadow -Wno-unused-command-line-argument -Wno-attributes -Wno-pessimizing-move -Wno-c++11-extensions -Wno-user-defined-literals -Wno-noexcept-type -Wsign-compare -Wunused-variable -Wunused-parameter -Wunreachable-code -std=c++2a -fdeprecated-macro -fdebug-compilation-dir /tmp/_update_lc/r/projects/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy -ftemplate-depth 270 -ferror-limit 19 -fmessage-length 0 -fno-implicit-modules -fobjc-runtime=gcc -fcxx-exceptions -fexceptions -fdiagnostics-show-option -faddrsig -o /tmp/_update_lc/r/projects/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/Output/copy.pass.cpp.o -x c++ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp clang -cc1 version 9.0.0 based upon LLVM 9.0.0 default target x86_64-unknown-linux-gnu ignoring nonexistent directory "/include" #include "..." search starts here: #include <...> search starts here: /home/dave/s/lp/libcxx/include /tmp/_update_lc/r/projects/libcxx/include/c++build /home/dave/s/lp/libcxx/test/support /usr/local/include /usr/lib64/clang/9.0.0/include /usr/include End of search list. /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:26:9: error: variables defined in a constexpr function must be initialized int ia[N]; ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:40:5: error: no matching function for call to 'test_copy' test_copy<input_iterator<const int*>, output_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:23:1: note: candidate template ignored: substitution failure [with InIter = input_iterator<const int *, const int *>, OutIter = output_iterator<int *>] test_copy() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:41:5: error: no matching function for call to 'test_copy' test_copy<input_iterator<const int*>, input_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:23:1: note: candidate template ignored: substitution failure [with InIter = input_iterator<const int *, const int *>, OutIter = input_iterator<int *, int *>] test_copy() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:42:5: error: no matching function for call to 'test_copy' test_copy<input_iterator<const int*>, forward_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:23:1: note: candidate template ignored: substitution failure [with InIter = input_iterator<const int *, const int *>, OutIter = forward_iterator<int *>] test_copy() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:43:5: error: no matching function for call to 'test_copy' test_copy<input_iterator<const int*>, bidirectional_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:23:1: note: candidate template ignored: substitution failure [with InIter = input_iterator<const int *, const int *>, OutIter = bidirectional_iterator<int *>] test_copy() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:44:5: error: no matching function for call to 'test_copy' test_copy<input_iterator<const int*>, random_access_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:23:1: note: candidate template ignored: substitution failure [with InIter = input_iterator<const int *, const int *>, OutIter = random_access_iterator<int *>] test_copy() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:45:5: error: no matching function for call to 'test_copy' test_copy<input_iterator<const int*>, int*>(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:23:1: note: candidate template ignored: substitution failure [with InIter = input_iterator<const int *, const int *>, OutIter = int *] test_copy() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:47:5: error: no matching function for call to 'test_copy' test_copy<forward_iterator<const int*>, output_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:23:1: note: candidate template ignored: substitution failure [with InIter = forward_iterator<const int *>, OutIter = output_iterator<int *>] test_copy() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:48:5: error: no matching function for call to 'test_copy' test_copy<forward_iterator<const int*>, input_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:23:1: note: candidate template ignored: substitution failure [with InIter = forward_iterator<const int *>, OutIter = input_iterator<int *, int *>] test_copy() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:49:5: error: no matching function for call to 'test_copy' test_copy<forward_iterator<const int*>, forward_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:23:1: note: candidate template ignored: substitution failure [with InIter = forward_iterator<const int *>, OutIter = forward_iterator<int *>] test_copy() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:50:5: error: no matching function for call to 'test_copy' test_copy<forward_iterator<const int*>, bidirectional_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:23:1: note: candidate template ignored: substitution failure [with InIter = forward_iterator<const int *>, OutIter = bidirectional_iterator<int *>] test_copy() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:51:5: error: no matching function for call to 'test_copy' test_copy<forward_iterator<const int*>, random_access_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:23:1: note: candidate template ignored: substitution failure [with InIter = forward_iterator<const int *>, OutIter = random_access_iterator<int *>] test_copy() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:52:5: error: no matching function for call to 'test_copy' test_copy<forward_iterator<const int*>, int*>(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:23:1: note: candidate template ignored: substitution failure [with InIter = forward_iterator<const int *>, OutIter = int *] test_copy() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:54:5: error: no matching function for call to 'test_copy' test_copy<bidirectional_iterator<const int*>, output_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:23:1: note: candidate template ignored: substitution failure [with InIter = bidirectional_iterator<const int *>, OutIter = output_iterator<int *>] test_copy() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:55:5: error: no matching function for call to 'test_copy' test_copy<bidirectional_iterator<const int*>, input_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:23:1: note: candidate template ignored: substitution failure [with InIter = bidirectional_iterator<const int *>, OutIter = input_iterator<int *, int *>] test_copy() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:56:5: error: no matching function for call to 'test_copy' test_copy<bidirectional_iterator<const int*>, forward_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:23:1: note: candidate template ignored: substitution failure [with InIter = bidirectional_iterator<const int *>, OutIter = forward_iterator<int *>] test_copy() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:57:5: error: no matching function for call to 'test_copy' test_copy<bidirectional_iterator<const int*>, bidirectional_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:23:1: note: candidate template ignored: substitution failure [with InIter = bidirectional_iterator<const int *>, OutIter = bidirectional_iterator<int *>] test_copy() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:58:5: error: no matching function for call to 'test_copy' test_copy<bidirectional_iterator<const int*>, random_access_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:23:1: note: candidate template ignored: substitution failure [with InIter = bidirectional_iterator<const int *>, OutIter = random_access_iterator<int *>] test_copy() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:59:5: error: no matching function for call to 'test_copy' test_copy<bidirectional_iterator<const int*>, int*>(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:23:1: note: candidate template ignored: substitution failure [with InIter = bidirectional_iterator<const int *>, OutIter = int *] test_copy() ^ fatal error: too many errors emitted, stopping now [-ferror-limit=] 20 errors generated. -- Compilation failed unexpectedly! ******************** Testing: 0.. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80 FAIL: libc++ :: std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp (50805 of 59142) ******************** TEST 'libc++ :: std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp' FAILED ******************** Command: ['/usr/bin/clang++', '-o', '/tmp/_update_lc/r/projects/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/Output/copy_if.pass.cpp.o', '-x', 'c++', '/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp', '-c', '-v', '-ftemplate-depth=270', '-Werror=thread-safety', '-std=c++2a', '-include', '/home/dave/s/lp/libcxx/test/support/nasty_macros.h', '-nostdinc++', '-I/home/dave/s/lp/libcxx/include', '-I/tmp/_update_lc/r/projects/libcxx/include/c++build', '-D__STDC_FORMAT_MACROS', '-D__STDC_LIMIT_MACROS', '-D__STDC_CONSTANT_MACROS', '-I/home/dave/s/lp/libcxx/test/support', '-DLIBCXX_FILESYSTEM_STATIC_TEST_ROOT="/home/dave/s/lp/libcxx/test/std/input.output/filesystems/Inputs/static_test_env"', '-DLIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT="/tmp/_update_lc/r/projects/libcxx/test/filesystem/Output/dynamic_env"', '-DLIBCXX_FILESYSTEM_DYNAMIC_TEST_HELPER="/usr/bin/python /home/dave/s/lp/libcxx/test/support/filesystem_dynamic_test_helper.py"', '-D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER', '-Wall', '-Wextra', '-Werror', '-Wuser-defined-warnings', '-Wshadow', '-Wno-unused-command-line-argument', '-Wno-attributes', '-Wno-pessimizing-move', '-Wno-c++11-extensions', '-Wno-user-defined-literals', '-Wno-noexcept-type', '-Wsign-compare', '-Wunused-variable', '-Wunused-parameter', '-Wunreachable-code', '-c'] Exit Code: 1 Standard Error: -- clang version 9.0.0 (Fedora 9.0.0-1.fc31) Target: x86_64-unknown-linux-gnu Thread model: posix InstalledDir: /usr/bin Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-redhat-linux/9 Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/9 Selected GCC installation: /usr/bin/../lib/gcc/x86_64-redhat-linux/9 Candidate multilib: .;@m64 Candidate multilib: 32;@m32 Selected multilib: .;@m64 "/usr/bin/clang-9" -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -discard-value-names -main-file-name copy_if.pass.cpp -mrelocation-model static -mthread-model posix -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables -fuse-init-array -target-cpu x86-64 -dwarf-column-info -debugger-tuning=gdb -v -coverage-notes-file /tmp/_update_lc/r/projects/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/Output/copy_if.pass.cpp.gcno -nostdinc++ -resource-dir /usr/lib64/clang/9.0.0 -include /home/dave/s/lp/libcxx/test/support/nasty_macros.h -I /home/dave/s/lp/libcxx/include -I /tmp/_update_lc/r/projects/libcxx/include/c++build -D __STDC_FORMAT_MACROS -D __STDC_LIMIT_MACROS -D __STDC_CONSTANT_MACROS -I /home/dave/s/lp/libcxx/test/support -D "LIBCXX_FILESYSTEM_STATIC_TEST_ROOT=\"/home/dave/s/lp/libcxx/test/std/input.output/filesystems/Inputs/static_test_env\"" -D "LIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT=\"/tmp/_update_lc/r/projects/libcxx/test/filesystem/Output/dynamic_env\"" -D "LIBCXX_FILESYSTEM_DYNAMIC_TEST_HELPER=\"/usr/bin/python /home/dave/s/lp/libcxx/test/support/filesystem_dynamic_test_helper.py\"" -D _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER -internal-isystem /usr/local/include -internal-isystem /usr/lib64/clang/9.0.0/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -Werror=thread-safety -Wall -Wextra -Werror -Wuser-defined-warnings -Wshadow -Wno-unused-command-line-argument -Wno-attributes -Wno-pessimizing-move -Wno-c++11-extensions -Wno-user-defined-literals -Wno-noexcept-type -Wsign-compare -Wunused-variable -Wunused-parameter -Wunreachable-code -std=c++2a -fdeprecated-macro -fdebug-compilation-dir /tmp/_update_lc/r/projects/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy -ftemplate-depth 270 -ferror-limit 19 -fmessage-length 0 -fno-implicit-modules -fobjc-runtime=gcc -fcxx-exceptions -fexceptions -fdiagnostics-show-option -faddrsig -o /tmp/_update_lc/r/projects/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/Output/copy_if.pass.cpp.o -x c++ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp clang -cc1 version 9.0.0 based upon LLVM 9.0.0 default target x86_64-unknown-linux-gnu ignoring nonexistent directory "/include" #include "..." search starts here: #include <...> search starts here: /home/dave/s/lp/libcxx/include /tmp/_update_lc/r/projects/libcxx/include/c++build /home/dave/s/lp/libcxx/test/support /usr/local/include /usr/lib64/clang/9.0.0/include /usr/include End of search list. /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:33:9: error: variables defined in a constexpr function must be initialized int ia[N]; ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:47:5: error: no matching function for call to 'test_copy_if' test_copy_if<input_iterator<const int*>, output_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:30:1: note: candidate template ignored: substitution failure [with InIter = input_iterator<const int *, const int *>, OutIter = output_iterator<int *>] test_copy_if() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:48:5: error: no matching function for call to 'test_copy_if' test_copy_if<input_iterator<const int*>, input_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:30:1: note: candidate template ignored: substitution failure [with InIter = input_iterator<const int *, const int *>, OutIter = input_iterator<int *, int *>] test_copy_if() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:49:5: error: no matching function for call to 'test_copy_if' test_copy_if<input_iterator<const int*>, forward_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:30:1: note: candidate template ignored: substitution failure [with InIter = input_iterator<const int *, const int *>, OutIter = forward_iterator<int *>] test_copy_if() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:50:5: error: no matching function for call to 'test_copy_if' test_copy_if<input_iterator<const int*>, bidirectional_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:30:1: note: candidate template ignored: substitution failure [with InIter = input_iterator<const int *, const int *>, OutIter = bidirectional_iterator<int *>] test_copy_if() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:51:5: error: no matching function for call to 'test_copy_if' test_copy_if<input_iterator<const int*>, random_access_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:30:1: note: candidate template ignored: substitution failure [with InIter = input_iterator<const int *, const int *>, OutIter = random_access_iterator<int *>] test_copy_if() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:52:5: error: no matching function for call to 'test_copy_if' test_copy_if<input_iterator<const int*>, int*>(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:30:1: note: candidate template ignored: substitution failure [with InIter = input_iterator<const int *, const int *>, OutIter = int *] test_copy_if() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:54:5: error: no matching function for call to 'test_copy_if' test_copy_if<forward_iterator<const int*>, output_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:30:1: note: candidate template ignored: substitution failure [with InIter = forward_iterator<const int *>, OutIter = output_iterator<int *>] test_copy_if() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:55:5: error: no matching function for call to 'test_copy_if' test_copy_if<forward_iterator<const int*>, input_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:30:1: note: candidate template ignored: substitution failure [with InIter = forward_iterator<const int *>, OutIter = input_iterator<int *, int *>] test_copy_if() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:56:5: error: no matching function for call to 'test_copy_if' test_copy_if<forward_iterator<const int*>, forward_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:30:1: note: candidate template ignored: substitution failure [with InIter = forward_iterator<const int *>, OutIter = forward_iterator<int *>] test_copy_if() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:57:5: error: no matching function for call to 'test_copy_if' test_copy_if<forward_iterator<const int*>, bidirectional_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:30:1: note: candidate template ignored: substitution failure [with InIter = forward_iterator<const int *>, OutIter = bidirectional_iterator<int *>] test_copy_if() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:58:5: error: no matching function for call to 'test_copy_if' test_copy_if<forward_iterator<const int*>, random_access_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:30:1: note: candidate template ignored: substitution failure [with InIter = forward_iterator<const int *>, OutIter = random_access_iterator<int *>] test_copy_if() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:59:5: error: no matching function for call to 'test_copy_if' test_copy_if<forward_iterator<const int*>, int*>(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:30:1: note: candidate template ignored: substitution failure [with InIter = forward_iterator<const int *>, OutIter = int *] test_copy_if() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:61:5: error: no matching function for call to 'test_copy_if' test_copy_if<bidirectional_iterator<const int*>, output_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:30:1: note: candidate template ignored: substitution failure [with InIter = bidirectional_iterator<const int *>, OutIter = output_iterator<int *>] test_copy_if() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:62:5: error: no matching function for call to 'test_copy_if' test_copy_if<bidirectional_iterator<const int*>, input_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:30:1: note: candidate template ignored: substitution failure [with InIter = bidirectional_iterator<const int *>, OutIter = input_iterator<int *, int *>] test_copy_if() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:63:5: error: no matching function for call to 'test_copy_if' test_copy_if<bidirectional_iterator<const int*>, forward_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:30:1: note: candidate template ignored: substitution failure [with InIter = bidirectional_iterator<const int *>, OutIter = forward_iterator<int *>] test_copy_if() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:64:5: error: no matching function for call to 'test_copy_if' test_copy_if<bidirectional_iterator<const int*>, bidirectional_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:30:1: note: candidate template ignored: substitution failure [with InIter = bidirectional_iterator<const int *>, OutIter = bidirectional_iterator<int *>] test_copy_if() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:65:5: error: no matching function for call to 'test_copy_if' test_copy_if<bidirectional_iterator<const int*>, random_access_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:30:1: note: candidate template ignored: substitution failure [with InIter = bidirectional_iterator<const int *>, OutIter = random_access_iterator<int *>] test_copy_if() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:66:5: error: no matching function for call to 'test_copy_if' test_copy_if<bidirectional_iterator<const int*>, int*>(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp:30:1: note: candidate template ignored: substitution failure [with InIter = bidirectional_iterator<const int *>, OutIter = int *] test_copy_if() ^ fatal error: too many errors emitted, stopping now [-ferror-limit=] 20 errors generated. -- Compilation failed unexpectedly! ******************** Testing: 0.. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80 FAIL: libc++ :: std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp (50807 of 59142) ******************** TEST 'libc++ :: std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp' FAILED ******************** Command: ['/usr/bin/clang++', '-o', '/tmp/_update_lc/r/projects/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/Output/copy_n.pass.cpp.o', '-x', 'c++', '/home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp', '-c', '-v', '-ftemplate-depth=270', '-Werror=thread-safety', '-std=c++2a', '-include', '/home/dave/s/lp/libcxx/test/support/nasty_macros.h', '-nostdinc++', '-I/home/dave/s/lp/libcxx/include', '-I/tmp/_update_lc/r/projects/libcxx/include/c++build', '-D__STDC_FORMAT_MACROS', '-D__STDC_LIMIT_MACROS', '-D__STDC_CONSTANT_MACROS', '-I/home/dave/s/lp/libcxx/test/support', '-DLIBCXX_FILESYSTEM_STATIC_TEST_ROOT="/home/dave/s/lp/libcxx/test/std/input.output/filesystems/Inputs/static_test_env"', '-DLIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT="/tmp/_update_lc/r/projects/libcxx/test/filesystem/Output/dynamic_env"', '-DLIBCXX_FILESYSTEM_DYNAMIC_TEST_HELPER="/usr/bin/python /home/dave/s/lp/libcxx/test/support/filesystem_dynamic_test_helper.py"', '-D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER', '-Wall', '-Wextra', '-Werror', '-Wuser-defined-warnings', '-Wshadow', '-Wno-unused-command-line-argument', '-Wno-attributes', '-Wno-pessimizing-move', '-Wno-c++11-extensions', '-Wno-user-defined-literals', '-Wno-noexcept-type', '-Wsign-compare', '-Wunused-variable', '-Wunused-parameter', '-Wunreachable-code', '-c'] Exit Code: 1 Standard Error: -- clang version 9.0.0 (Fedora 9.0.0-1.fc31) Target: x86_64-unknown-linux-gnu Thread model: posix InstalledDir: /usr/bin Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-redhat-linux/9 Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/9 Selected GCC installation: /usr/bin/../lib/gcc/x86_64-redhat-linux/9 Candidate multilib: .;@m64 Candidate multilib: 32;@m32 Selected multilib: .;@m64 "/usr/bin/clang-9" -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -discard-value-names -main-file-name copy_n.pass.cpp -mrelocation-model static -mthread-model posix -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables -fuse-init-array -target-cpu x86-64 -dwarf-column-info -debugger-tuning=gdb -v -coverage-notes-file /tmp/_update_lc/r/projects/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/Output/copy_n.pass.cpp.gcno -nostdinc++ -resource-dir /usr/lib64/clang/9.0.0 -include /home/dave/s/lp/libcxx/test/support/nasty_macros.h -I /home/dave/s/lp/libcxx/include -I /tmp/_update_lc/r/projects/libcxx/include/c++build -D __STDC_FORMAT_MACROS -D __STDC_LIMIT_MACROS -D __STDC_CONSTANT_MACROS -I /home/dave/s/lp/libcxx/test/support -D "LIBCXX_FILESYSTEM_STATIC_TEST_ROOT=\"/home/dave/s/lp/libcxx/test/std/input.output/filesystems/Inputs/static_test_env\"" -D "LIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT=\"/tmp/_update_lc/r/projects/libcxx/test/filesystem/Output/dynamic_env\"" -D "LIBCXX_FILESYSTEM_DYNAMIC_TEST_HELPER=\"/usr/bin/python /home/dave/s/lp/libcxx/test/support/filesystem_dynamic_test_helper.py\"" -D _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER -internal-isystem /usr/local/include -internal-isystem /usr/lib64/clang/9.0.0/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -Werror=thread-safety -Wall -Wextra -Werror -Wuser-defined-warnings -Wshadow -Wno-unused-command-line-argument -Wno-attributes -Wno-pessimizing-move -Wno-c++11-extensions -Wno-user-defined-literals -Wno-noexcept-type -Wsign-compare -Wunused-variable -Wunused-parameter -Wunreachable-code -std=c++2a -fdeprecated-macro -fdebug-compilation-dir /tmp/_update_lc/r/projects/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy -ftemplate-depth 270 -ferror-limit 19 -fmessage-length 0 -fno-implicit-modules -fobjc-runtime=gcc -fcxx-exceptions -fexceptions -fdiagnostics-show-option -faddrsig -o /tmp/_update_lc/r/projects/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/Output/copy_n.pass.cpp.o -x c++ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp clang -cc1 version 9.0.0 based upon LLVM 9.0.0 default target x86_64-unknown-linux-gnu ignoring nonexistent directory "/include" #include "..." search starts here: #include <...> search starts here: /home/dave/s/lp/libcxx/include /tmp/_update_lc/r/projects/libcxx/include/c++build /home/dave/s/lp/libcxx/test/support /usr/local/include /usr/lib64/clang/9.0.0/include /usr/include End of search list. /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:29:9: error: variables defined in a constexpr function must be initialized int ia[N]; ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:43:5: error: no matching function for call to 'test_copy_n' test_copy_n<input_iterator<const int*>, output_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:26:1: note: candidate template ignored: substitution failure [with InIter = input_iterator<const int *, const int *>, OutIter = output_iterator<int *>] test_copy_n() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:44:5: error: no matching function for call to 'test_copy_n' test_copy_n<input_iterator<const int*>, input_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:26:1: note: candidate template ignored: substitution failure [with InIter = input_iterator<const int *, const int *>, OutIter = input_iterator<int *, int *>] test_copy_n() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:45:5: error: no matching function for call to 'test_copy_n' test_copy_n<input_iterator<const int*>, forward_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:26:1: note: candidate template ignored: substitution failure [with InIter = input_iterator<const int *, const int *>, OutIter = forward_iterator<int *>] test_copy_n() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:46:5: error: no matching function for call to 'test_copy_n' test_copy_n<input_iterator<const int*>, bidirectional_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:26:1: note: candidate template ignored: substitution failure [with InIter = input_iterator<const int *, const int *>, OutIter = bidirectional_iterator<int *>] test_copy_n() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:47:5: error: no matching function for call to 'test_copy_n' test_copy_n<input_iterator<const int*>, random_access_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:26:1: note: candidate template ignored: substitution failure [with InIter = input_iterator<const int *, const int *>, OutIter = random_access_iterator<int *>] test_copy_n() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:48:5: error: no matching function for call to 'test_copy_n' test_copy_n<input_iterator<const int*>, int*>(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:26:1: note: candidate template ignored: substitution failure [with InIter = input_iterator<const int *, const int *>, OutIter = int *] test_copy_n() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:50:5: error: no matching function for call to 'test_copy_n' test_copy_n<forward_iterator<const int*>, output_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:26:1: note: candidate template ignored: substitution failure [with InIter = forward_iterator<const int *>, OutIter = output_iterator<int *>] test_copy_n() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:51:5: error: no matching function for call to 'test_copy_n' test_copy_n<forward_iterator<const int*>, input_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:26:1: note: candidate template ignored: substitution failure [with InIter = forward_iterator<const int *>, OutIter = input_iterator<int *, int *>] test_copy_n() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:52:5: error: no matching function for call to 'test_copy_n' test_copy_n<forward_iterator<const int*>, forward_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:26:1: note: candidate template ignored: substitution failure [with InIter = forward_iterator<const int *>, OutIter = forward_iterator<int *>] test_copy_n() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:53:5: error: no matching function for call to 'test_copy_n' test_copy_n<forward_iterator<const int*>, bidirectional_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:26:1: note: candidate template ignored: substitution failure [with InIter = forward_iterator<const int *>, OutIter = bidirectional_iterator<int *>] test_copy_n() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:54:5: error: no matching function for call to 'test_copy_n' test_copy_n<forward_iterator<const int*>, random_access_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:26:1: note: candidate template ignored: substitution failure [with InIter = forward_iterator<const int *>, OutIter = random_access_iterator<int *>] test_copy_n() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:55:5: error: no matching function for call to 'test_copy_n' test_copy_n<forward_iterator<const int*>, int*>(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:26:1: note: candidate template ignored: substitution failure [with InIter = forward_iterator<const int *>, OutIter = int *] test_copy_n() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:57:5: error: no matching function for call to 'test_copy_n' test_copy_n<bidirectional_iterator<const int*>, output_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:26:1: note: candidate template ignored: substitution failure [with InIter = bidirectional_iterator<const int *>, OutIter = output_iterator<int *>] test_copy_n() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:58:5: error: no matching function for call to 'test_copy_n' test_copy_n<bidirectional_iterator<const int*>, input_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:26:1: note: candidate template ignored: substitution failure [with InIter = bidirectional_iterator<const int *>, OutIter = input_iterator<int *, int *>] test_copy_n() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:59:5: error: no matching function for call to 'test_copy_n' test_copy_n<bidirectional_iterator<const int*>, forward_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:26:1: note: candidate template ignored: substitution failure [with InIter = bidirectional_iterator<const int *>, OutIter = forward_iterator<int *>] test_copy_n() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:60:5: error: no matching function for call to 'test_copy_n' test_copy_n<bidirectional_iterator<const int*>, bidirectional_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:26:1: note: candidate template ignored: substitution failure [with InIter = bidirectional_iterator<const int *>, OutIter = bidirectional_iterator<int *>] test_copy_n() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:61:5: error: no matching function for call to 'test_copy_n' test_copy_n<bidirectional_iterator<const int*>, random_access_iterator<int*> >(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:26:1: note: candidate template ignored: substitution failure [with InIter = bidirectional_iterator<const int *>, OutIter = random_access_iterator<int *>] test_copy_n() ^ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:62:5: error: no matching function for call to 'test_copy_n' test_copy_n<bidirectional_iterator<const int*>, int*>(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/dave/s/lp/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:26:1: note: candidate template ignored: substitution failure [with InIter = bidirectional_iterator<const int *>, OutIter = int *] test_copy_n() ^ fatal error: too many errors emitted, stopping now [-ferror-limit=] 20 errors generated. -- Compilation failed unexpectedly! ********************
Same failures on ARM bots, logs are available here: http://lab.llvm.org:8011/builders/libcxx-libcxxabi-libunwind-armv7-linux/builds/1132
Folks, we're aware of the CI failures, and we're working on fixing them. It's taking a bit longer than usual since we're at a committee meeting right now.
Would you object if I revert this? Bots/CI are fairly pointless if fixes/reverts aren't timely.
If I'm not mistaken, __libcpp_is_constant_evaluated() is always true here, because the result is always required to be a constant expression (since it's a NTTP). This is one of the many pitfalls of this function.
Instead,I think you need to branch in the main copy() function, like so:
Or something along those lines, you get the point.