We recommend using Visual Studio 2017

add_pointer Class


The latest version of this topic can be found at add_pointer Class.

Makes a pointer-to-type from a specified type.

template <class Ty>  
struct add_pointer;  
template <class T>using add_pointer_t = typename add_pointer<T>::type;  


The type to modify.

The member typedef type names the same type as remove_reference<T>::type*.

Because it is invalid to make a pointer from a reference, add_pointer removes the reference, if any, from the specified type before it makes a pointer-to-type. Consequently, you can use a type with add_pointer without being concerned about whether the type is a reference.

The following example demonstrates that add_pointer of a type is the same as a pointer to that type.

#include <type_traits>   
#include <iostream>   
int main()   
    std::add_pointer_t<int> *p = (int **)0;   
    p = p;  // to quiet "unused" warning   
    std::cout << "add_pointer_t<int> == "   
        << typeid(*p).name() << std::endl;   
    return (0);   

add_pointer_t<int> == int *  

Header: <type_traits>

Namespace: std

remove_pointer Class