繁体   English   中英

是否可以使用模板类的单个参数将类型和该类型的指针传递给c ++模板类?

[英]Is it possible to pass a type and a pointer of that type to a c++ template class using a single parameter of a template class?

是否可以使用模板类的单个参数将类型和该类型的指针传递给c ++模板类?


我想使用一个指向嵌入式硬件地址(一个uart)的指针,该地址的类型为UART_HandleTypeDef并推断出该类型信息,而不是手动声明它。 类似于:

template<typename T> class serial{
public:
    T::value_type* uart = T;
};

我想摆脱通常的表示法,这需要我声明类型然后传递一个指针:

template<typename T,T* ptr> class c{
public:
  T* _ptr = ptr;
};

更新:我忘了提一下:我的编译器支持C ++ 11之前的版本。 它支持某些 C ++ 11功能

从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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM