【发布时间】:2019-05-21 11:41:11
【问题描述】:
是否可以确保某个模板参数(或模板参数的组合)最多使用一次?是否可以跟踪它的使用次数,如果多次使用则抛出 static_assert 错误?
举个例子——假设我想创建一个静态的、基于模板的 GPIO 类:
template<uint8_t Port, uint8_t Pin> class Gpio {};
一个人可以在一个 Board 类中布置整个电路板:
struct Board {
Gpio<1, 1> myInputPin;
Gpio<1, 2> myOutputPin;
Gpio<2, 0> ledR;
Gpio<2, 1> ledG;
Gpio<2, 2> ledB;
};
对于任何给定的端口/引脚组合,只有为该端口和引脚实例化一个单个 GPIO 模板才有意义。如果有人为同一个端口/引脚组合创建了两个不同的 GPIO 实例,这可能表示冲突,我想在编译过程中发现这个错误。
这可能吗?
【问题讨论】:
-
那么你有一个类,比如
Gpio<1, 2>,想保证这个类只有一个对象存在?听起来您想使用单例反模式。
标签: c++ c++11 templates static-assert