maintainer-feedback requested: [Bug 248795] std::random_shuffle broken with LLVM11
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Fri Aug 21 04:32:15 UTC 2020
Tobias Kortkamp <tobik at freebsd.org> has asked freebsd-toolchain (Nobody)
<toolchain at FreeBSD.org> for maintainer-feedback:
Bug 248795: std::random_shuffle broken with LLVM11
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=248795
--- Description ---
The following example no longer compiles after the LLVM11 import.
This affects a number of ports like x11/workrave, www/newsboat,
japanese/zinnia, ... I can patch them to use shuffle instead, but
even though random_shuffle is deprecated it should still work,
right?
$ cat foo.cc
#include <algorithm>
#include <vector>
int main()
{
std::vector<int> v = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
std::random_shuffle(v.begin(), v.end());
}
$ c++ foo.cc
foo.cc:7:10: warning: 'random_shuffle<std::__1::__wrap_iter<int *>>' is
deprecated [-Wdeprecated-declarations]
std::random_shuffle(v.begin(), v.end());
^
/usr/include/c++/v1/algorithm:3095:1: note:
'random_shuffle<std::__1::__wrap_iter<int *>>' has been explicitly marked
deprecated here
_LIBCPP_DEPRECATED_IN_CXX14 void
^
/usr/include/c++/v1/__config:991:39: note: expanded from macro
'_LIBCPP_DEPRECATED_IN_CXX14'
# define _LIBCPP_DEPRECATED_IN_CXX14 _LIBCPP_DEPRECATED
^
/usr/include/c++/v1/__config:974:48: note: expanded from macro
'_LIBCPP_DEPRECATED'
# define _LIBCPP_DEPRECATED __attribute__ ((deprecated))
^
1 warning generated.
ld: error: undefined symbol: std::__1::__rs_get()
>>> referenced by foo.cc
>>> /tmp/foo-6a4153.o:(void
std::__1::random_shuffle<std::__1::__wrap_iter<int*>
>(std::__1::__wrap_iter<int*>, std::__1::__wrap_iter<int*>))
ld: error: undefined symbol: std::__1::__rs_default::~__rs_default()
>>> referenced by foo.cc
>>> /tmp/foo-6a4153.o:(void
std::__1::random_shuffle<std::__1::__wrap_iter<int*>
>(std::__1::__wrap_iter<int*>, std::__1::__wrap_iter<int*>))
>>> referenced by foo.cc
>>> /tmp/foo-6a4153.o:(void
std::__1::random_shuffle<std::__1::__wrap_iter<int*>
>(std::__1::__wrap_iter<int*>, std::__1::__wrap_iter<int*>))
ld: error: undefined symbol: std::__1::__rs_default::operator()()
>>> referenced by foo.cc
>>>
/tmp/foo-6a4153.o:(std::__1::__independent_bits_engine<std::__1::__rs_default,
unsigned long>::__eval(std::__1::integral_constant<bool, true>))
>>> referenced by foo.cc
>>>
/tmp/foo-6a4153.o:(std::__1::__independent_bits_engine<std::__1::__rs_default,
unsigned long>::__eval(std::__1::integral_constant<bool, true>))
c++: error: linker command failed with exit code 1 (use -v to see invocation)
More information about the freebsd-toolchain
mailing list