【发布时间】:2013-01-28 10:34:01
【问题描述】:
我有这门课:
template <typename T, uint64_t N>
struct Probe {
static const uint64_t Counter = N;
typedef T Type;
};
我用作:
typedef Probe <int, 0> FirstIntProbe;
typedef Probe <int, 1> SecondIntProbe;
typedef Probe <float, 2> FloatProbe;
是否可以创建一个编译时\宏方法,它允许我在不指定第二个参数的情况下实例化此类,例如:
typedef Probe <int, Something?> FirstIntProbe;
typedef Probe <int, Something?> SecondIntProbe;
typedef Probe <float, Something?> FloatProbe;
我认为这是不可能的,但我又看到人们用 C++ 做我以前认为不可能的事情。
更新:
- 不需要加一,重要的是 每个探头都有自己的编号。
- 不需要唯一 跨不同 .cpp 文件\翻译单元的编号。
【问题讨论】:
-
N 的值从 0 开始并且始终是连续的是否重要?那么跨翻译单元的行为呢?一些编译器有
__COUNTER__,这对于您的目的可能已经足够了。
标签: c++ c++11 generic-programming