std::remove_pointer
Min standard notice:
Header: <type_traits>
Provides the member typedef type which is the type pointed to by T, or, if T is not a pointer, then type is the same as T.
# Declarations
template< class T >
struct remove_pointer;
(since C++11)
# Example
#include <type_traits>
static_assert
(
std::is_same_v<int, int> == true &&
std::is_same_v<int, int*> == false &&
std::is_same_v<int, int**> == false &&
std::is_same_v<int, std::remove_pointer_t<int>> == true &&
std::is_same_v<int, std::remove_pointer_t<int*>> == true &&
std::is_same_v<int, std::remove_pointer_t<int**>> == false &&
std::is_same_v<int, std::remove_pointer_t<int* const>> == true &&
std::is_same_v<int, std::remove_pointer_t<int* volatile>> == true &&
std::is_same_v<int, std::remove_pointer_t<int* const volatile>> == true
);
int main() {}