是否可以使用模板类的单个参数将类型和该类型的指针传递给c ++模板类?
我想使用一个指向类型为UART_HandleTypeDef
的嵌入式硬件地址(一个uart)的指针,并推断出该类型信息,而不是手动声明它。类似于:
template<typename T> class serial{
public:
T::value_type* uart = T;
};
我想摆脱通常的表示法,即要求我声明类型然后传递指针:
template<typename T,T* ptr> class c{
public:
T* _ptr = ptr;
};
更新: 我忘了提:我的编译器支持C ++ 11之前的版本。它支持some C++11 features
答案 0 :(得分:4)
自C ++ 17起,您可能拥有
template <auto* ptr> class c
{
public:
auto _ptr = ptr;
};
在此之前,
template <typename T, T* ptr> class c
{
public:
T* _ptr = ptr;
};
是必经之路。
自C ++ 11起,MACRO就可以提供帮助
#define TEMPLATE_AUTO(...) decltype(__VA_ARGS__), __VA_ARGS__
c<TEMPLATE_AUTO(my_ptr)> v;