基于指针或值类型的条件类型

时间:2019-07-14 08:11:05

标签: c++

我想知道是否可以根据模板参数是否为指针来进行一些条件键入?

因此,例如,我希望下面的get方法返回T本身,如果它是一个指针(即T *)。如果不是指针(即T),则为T*

template<typename T>
class MyContainer {
    T get(); // If T is a pointer
    T* get(); // If T is not a pointer
}

1 个答案:

答案 0 :(得分:2)

仅是条件,如果它是指针,则不是:

#include <type_traits>

template<typename T>
class MyContainer {
    std::conditional_t<std::is_pointer<T>::value, T, T*> get();
};