Bonjour,

J'essaye de faire un emplace_back sur un vector.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
        static std::vector<portal<net::enable_client>*> container;
Le constructeur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
        portal(const std::tuple<d, d, idt, img_id_t, map_item_type_t, idt, idt, force_t, force_t, idt>& t) :
Le emplace_back:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
container.emplace_back(tools::explode<d, d, idt, img_id_t, map_item_type_t, idt, idt, force_t, force_t, idt>(l, fs2::basic_separator));
La fonction explode fonctionne très bien, si jamais cela peut aider:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
    template <class... Types>
    std::tuple<Types...> explode(const std::string& str, const char delimiter)
    {
        std::istringstream is(str);
        return variadic::explode_impl<Types...>::call(is, delimiter);
    }


J'obtient du compilo une ligne rouge...

/media/data/dev/projects/baws/baws/tools/secure_strings.h|29|warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]|
/media/data/dev/projects/Servers/handler/inl/player_channel.h||In member function ‘net::handlers::player_channel<Protocol, false>::ret net::handlers::player_channel<Protocol, false>::use_portal(net::session<Protocol>*, net::iopacket::reader&)’
/media/data/dev/projects/Servers/handler/inl/player_channel.h|108|error: ‘class net::packets::player_channel<false>’ has no member named ‘warp’|
/usr/include/c++/4.8/bits/alloc_traits.h|254| required from ‘static typename std::enable_if<std::allocator_traits<_Alloc>::__construct_helper<_Tp, _Args>::value, void>::type std::allocator_traits<_Alloc>::_S_construct(_Alloc&, _Tp*, _Args&& ...) [with _Tp = gamedata::portal<true>*; _Args = {std::tuple<double, double, long unsigned int, long unsigned int, short unsigned int, long unsigned int, long unsigned int, double, double, long unsigned int>}; _Alloc = std::allocator<gamedata::portal<true>*>; typename std::enable_if<std::allocator_traits<_Alloc>::__construct_helper<_Tp, _Args>::value, void>::type = void]’|
/usr/include/c++/4.8/bits/alloc_traits.h|393| required from ‘static decltype (_S_construct(__a, __p, (forward<_Args>)(std::allocator_traits::construct::__args)...)) std::allocator_traits<_Alloc>::construct(_Alloc&, _Tp*, _Args&& ...) [with _Tp = gamedata::portal<true>*; _Args = {std::tuple<double, double, long unsigned int, long unsigned int, short unsigned int, long unsigned int, long unsigned int, double, double, long unsigned int>}; _Alloc = std::allocator<gamedata::portal<true>*>; decltype (_S_construct(__a, __p, (forward<_Args>)(std::allocator_traits::construct::__args)...)) = <type error>]’|
/usr/include/c++/4.8/bits/vector.tcc|97| required from ‘void std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {std::tuple<double, double, long unsigned int, long unsigned int, short unsigned int, long unsigned int, long unsigned int, double, double, long unsigned int>}; _Tp = gamedata::portal<true>*; _Alloc = std::allocator<gamedata::portal<true>*>]’|
/media/data/dev/projects/gamedata/portal.h|30| required from here|
/usr/include/c++/4.8/ext/new_allocator.h|120|error: cannot convert ‘std::tuple<double, double, long unsigned int, long unsigned int, short unsigned int, long unsigned int, long unsigned int, double, double, long unsigned int>’ to ‘gamedata::portal<true>*’ in initialization|
||=== Build finished: 6 errors, 1 warnings ===|

Comment fait-on pour faire un joli emplace_back ?

Merci

nico