Template Struct is_pointer
Defined in File pointer_traits.hpp
Struct Documentation
-
template<class T>
struct is_pointer Type traits for validating if T is of type pointer or smart pointer.
In comparison to the existing type trait for pointer in the stdlib
std::is_pointer<T>
https://en.cppreference.com/w/cpp/types/is_pointer this trait is enhancing it for checking of smart pointer types as well. The valid pointer types are T*, std::shared_pointer<T> and std::unique_ptr<T>Potential use cases are for static assert when passing a template parameter requiring this parameter to be of type pointer without specifying which type of pointer (raw, smart).
class MyType { template<class T> MyType(T && arg) { static_assert(rcpputils::is_pointer<decltype(arg)>::value, "arg has to be a pointer"); arg->do_stuff(); // with the assert above, this call is guaranteed to work. } };