Go to the documentation of this file.
5 template <
class Po
intee>
8 using type = std::shared_ptr<Pointee>;
10 template <
class Derived>
11 static std::shared_ptr<Derived>
cast(std::shared_ptr<Pointee> _pointer)
13 return std::dynamic_pointer_cast<Derived>(std::move(_pointer));
18 template <
class Po
intee>
23 template <
class Derived>
24 static Derived*
cast(Pointee* _pointer)
26 return dynamic_cast<Derived*
>(_pointer);
39 template <
class... Parameters>
41 typename Pointer<BaseParameter>::type ,
63 template <
class... Parameters>
65 typename Pointer<BaseParameter>::type _base, Parameters&&... _params)
66 -> decltype(Factory<Arg>::create(
67 Pointer<BaseParameter>::template cast<Arg>(_base),
68 std::forward<Parameters>(_params)...))
70 if (
auto derived = Pointer<BaseParameter>::template cast<Arg>(_base))
72 return Factory<Arg>::create(
73 std::move(derived), std::forward<Parameters>(_params)...);
82 create(std::move(_base), std::forward<Parameters>(_params)...);
Pointee * type
Definition: metaprogramming-impl.hpp:21
Format of serialized trajectory in YAML.
Definition: algorithm.hpp:4
static std::shared_ptr< Derived > cast(std::shared_ptr< Pointee > _pointer)
Definition: metaprogramming-impl.hpp:11
Helper template class necessary to use std::shared_ptr as the pointer type in DynamicCastFactory.
Definition: metaprogramming-impl.hpp:6
static Derived * cast(Pointee *_pointer)
Definition: metaprogramming-impl.hpp:24
Wrapper for a variadic template parameter pack of types.
Definition: metaprogramming.hpp:13
static std::nullptr_t create(typename Pointer< BaseParameter >::type, Parameters &&...)
Definition: metaprogramming-impl.hpp:40
std::shared_ptr< Pointee > type
Definition: metaprogramming-impl.hpp:8
Call a template factory function based on runtime type of the first argument to a function.
Definition: metaprogramming.hpp:49
Helper template class necessary to use raw pointers as the pointer type in DynamicCastFactory.
Definition: metaprogramming-impl.hpp:19
static auto create(typename Pointer< BaseParameter >::type _base, Parameters &&... _params) -> decltype(Factory< Arg >::create(Pointer< BaseParameter >::template cast< Arg >(_base), std::forward< Parameters >(_params)...))
Definition: metaprogramming-impl.hpp:64