nie może dla życia mnie zrozumieć, dlaczego to się nie powiedzie:Dlaczego funkcja boost :: equals wymaga zakresu do kopiowania?
#include <vector>
#include "boost/algorithm/string/predicate.hpp"
struct Test
:
public std::vector<int>
{
Test() { }
Test(const Test&) { assert(false); }
};
int main()
{
Test a;
Test b;
boost::algorithm::equals(a, b);
return 0;
}
wyjściowa:
$ g++ boostEqualsCopyDemo.cpp -I /usr/include/boost-1_47
$ a.out
a.out: boostEqualsCopyDemo.cpp:10: Test::Test(const Test&): Assertion `false' failed.
Aborted (core dumped)
Próbowałem kopanie poprzez kod doładowania, ale to, że mój zawrót głowy. Wydaje się absurdem; takie marnotrawstwo i niepotrzebne. Co się dzieje?
Zobacz zgłoszenie błędu dotyczące tego problemu na stronie https://svn.boost.org/trac/boost/ticket/6149. –
Ta poprawka znajduje się teraz w bagażniku boost i powinna być częścią wersji 1.50: https://svn.boost.org/trac/boost/ticket/6149#comment:2 –