You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
There appears to have been a regression in xt::drop between the 0.26.0 and 0.27.0 releases.
Consider the following source code:
#include<xtensor/containers/xarray.hpp>
#include<xtensor/views/xview.hpp>intmain() {
auto my_array = xt::xtensor<double, 1>({1, 2, 3});
// This compiles.xt::view(my_array, xt::drop(1));
// This does not compile in 0.27.0.size_t index = 1;
xt::view(my_array, xt::drop(index));
}
The first xt::drop call builds fine in both versions of xtensor. However, the second xt::drop call fails to compile in xtensor 0.27.0 (but builds fine in 0.26.0). Specifically, I get a compiler error like:
views/xslice.hpp:506:46: error: type 'decay_t<unsigned long &>' (aka 'unsigned long') cannot be used prior to '::' because it has no members
506 | return xdrop_slice<typename std::decay_t<T>::value_type>(std::forward<T>(indices));
| ~~~~~^
../xtensor_test.cpp:12:25: note: in instantiation of function template specialization 'xt::drop<long, unsigned long &>' requested here
12 | xt::view(my_array, xt::drop(index));
| ^
1 error generated.
The compiler error happens for other integer types (e.g. int) as well.
Activity
Fix xt::drop with variables (#2912)