Skip to content

Multiselection compilation issue #231

@davidbrochart

Description

@davidbrochart

I'm trying to do a multiselection, like so:

#include "xframe/xvariable.hpp"
#include "xframe/xvariable_view.hpp"

int main(int argc, char* argv[])
{
    auto dim = xf::dimension({"lat", "lon"});
    auto coord = xf::coordinate({{"lat", xf::axis({"a", "b", "c"})},
                                 {"lon", xf::axis({"d", "e", "f"})}});
    xt::xarray<double> data
          {{1., 2., 3.},
           {4., 5., 6.},
           {7., 8., 9.}};
    auto var = variable(data, coord, dim);

    std::cout << var << std::endl;

    std::cout << xf::select(var, {{"lat", xf::range("a", "b")}, {"lon", xf::range("d", "f")}}) << std::endl;

    return 0;
}

But I get the following error:

In file included from /home/david/tmp/xframe/test.cc:2:0:
/home/david/soft/miniconda3/include/xframe/xvariable_view.hpp: In instantiation of 'struct xt::xcontainer_inner_types<xf::xvariable_view<xf::xvariable_container<xf::xcoordinate<xtl::xbasic_fixed_string<char, 55, 5, xtl::string_policy::silent_error, std::char_traits<char> >, xtl::mpl::vector<int, long unsigned int, char, xtl::xbasic_fixed_string<char, 55, 5, xtl::string_policy::silent_error, std::char_traits<char> > >, long unsigned int, xf::hash_map_tag>&, xt::xarray_container<xt::uvector<double, std::allocator<double> >, (xt::layout_type)1, xt::svector<long unsigned int, 4, std::allocator<long unsigned int>, true>, xt::xtensor_expression_tag>&>&> >':
/home/david/soft/miniconda3/include/xtensor/xsemantic.hpp:38:82:   required from 'class xt::xsemantic_base<xf::xvariable_view<xf::xvariable_container<xf::xcoordinate<xtl::xbasic_fixed_string<char, 55, 5, xtl::string_policy::silent_error, std::char_traits<char> >, xtl::mpl::vector<int, long unsigned int, char, xtl::xbasic_fixed_string<char, 55, 5, xtl::string_policy::silent_error, std::char_traits<char> > >, long unsigned int, xf::hash_map_tag>&, xt::xarray_container<xt::uvector<double, std::allocator<double> >, (xt::layout_type)1, xt::svector<long unsigned int, 4, std::allocator<long unsigned int>, true>, xt::xtensor_expression_tag>&>&> >'
/home/david/soft/miniconda3/include/xtensor/xsemantic.hpp:196:11:   required from 'class xt::xview_semantic<xf::xvariable_view<xf::xvariable_container<xf::xcoordinate<xtl::xbasic_fixed_string<char, 55, 5, xtl::string_policy::silent_error, std::char_traits<char> >, xtl::mpl::vector<int, long unsigned int, char, xtl::xbasic_fixed_string<char, 55, 5, xtl::string_policy::silent_error, std::char_traits<char> > >, long unsigned int, xf::hash_map_tag>&, xt::xarray_container<xt::uvector<double, std::allocator<double> >, (xt::layout_type)1, xt::svector<long unsigned int, 4, std::allocator<long unsigned int>, true>, xt::xtensor_expression_tag>&>&> >'
/home/david/soft/miniconda3/include/xframe/xvariable_view.hpp:63:11:   required from 'class xf::xvariable_view<xf::xvariable_container<xf::xcoordinate<xtl::xbasic_fixed_string<char, 55, 5, xtl::string_policy::silent_error, std::char_traits<char> >, xtl::mpl::vector<int, long unsigned int, char, xtl::xbasic_fixed_string<char, 55, 5, xtl::string_policy::silent_error, std::char_traits<char> > >, long unsigned int, xf::hash_map_tag>&, xt::xarray_container<xt::uvector<double, std::allocator<double> >, (xt::layout_type)1, xt::svector<long unsigned int, 4, std::allocator<long unsigned int>, true>, xt::xtensor_expression_tag>&>&>'
/home/david/soft/miniconda3/include/xframe/xvariable_view.hpp:1098:60:   required from 'auto xf::select(E&&, std::map<typename std::decay<_Tp>::type::key_type, xf::xaxis_slice<L> >&&) [with E = xf::xvariable_container<xf::xcoordinate<xtl::xbasic_fixed_string<char, 55, 5, xtl::string_policy::silent_error, std::char_traits<char> >, xtl::mpl::vector<int, long unsigned int, char, xtl::xbasic_fixed_string<char, 55, 5, xtl::string_policy::silent_error, std::char_traits<char> > >, long unsigned int, xf::hash_map_tag>&, xt::xarray_container<xt::uvector<double, std::allocator<double> >, (xt::layout_type)1, xt::svector<long unsigned int, 4, std::allocator<long unsigned int>, true>, xt::xtensor_expression_tag>&>&; L = xtl::mpl::vector<int, long unsigned int, char, xtl::xbasic_fixed_string<char, 55, 5, xtl::string_policy::silent_error, std::char_traits<char> > >; typename std::decay<_Tp>::type::key_type = xtl::xbasic_fixed_string<char, 55, 5, xtl::string_policy::silent_error, std::char_traits<char> >]'
/home/david/tmp/xframe/test.cc:17:94:   required from here
/home/david/soft/miniconda3/include/xframe/xvariable_view.hpp:54:113: error: 'xf::xvariable_base<xf::xvariable_container<xf::xcoordinate<xtl::xbasic_fixed_string<char, 55, 5, xtl::string_policy::silent_error, std::char_traits<char> >, xtl::mpl::vector<int, long unsigned int, char, xtl::xbasic_fixed_string<char, 55, 5, xtl::string_policy::silent_error, std::char_traits<char> > >, long unsigned int, xf::hash_map_tag>&, xt::xarray_container<xt::uvector<double, std::allocator<double> >, (xt::layout_type)1, xt::svector<long unsigned int, 4, std::allocator<long unsigned int>, true>, xt::xtensor_expression_tag>&> >::value_type {aka double}' is not a class, struct, or union type
         using temporary_data_type = xoptional_assembly<xarray<typename optional_type::value_type>, xarray<bool>>;
                                                                                                                 ^
/home/david/soft/miniconda3/include/xframe/xvariable_view.hpp:55:103: error: 'xf::xvariable_base<xf::xvariable_container<xf::xcoordinate<xtl::xbasic_fixed_string<char, 55, 5, xtl::string_policy::silent_error, std::char_traits<char> >, xtl::mpl::vector<int, long unsigned int, char, xtl::xbasic_fixed_string<char, 55, 5, xtl::string_policy::silent_error, std::char_traits<char> > >, long unsigned int, xf::hash_map_tag>&, xt::xarray_container<xt::uvector<double, std::allocator<double> >, (xt::layout_type)1, xt::svector<long unsigned int, 4, std::allocator<long unsigned int>, true>, xt::xtensor_expression_tag>&> >::value_type {aka double}' is not a class, struct, or union type
         using temporary_type = xf::xvariable_container<temporary_coordinate_type, temporary_data_type>;
                                                                                                       ^

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions