2013-06-02 63 views
2

我的模板类A包含调用模板类的静态函数的函数:如何为指针类创建一个静态模板函数?

template <typename T> 
void A<T>::fun() { 
    T obj = T::create(); 
    .... 
} 

如果我想这个代码工作时,T = B *我应该如何修改呢? 我知道我不能做(* T):: create(),但从概念上讲,这就是我想要的。

+0

澄清:当'T'是'U *'并且'T'不是指针类型时,您希望代码工作* both * –

回答

5

您可以使用std::remove_pointer型特点:

#include <type_traits> 

template <typename T> 
void A<T>::fun() { 
    T obj = std::remove_pointer<T>::type::create(); 
//   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
    // ... 
} 

如果双方std::remove_pointer<U*>::typestd::remove_pointer<U>::typeU

相关问题