我希望能够创建每个具有指示结构(而不是对象)顺序的成员的结构体。应该没有运行时间的开销,我应该可以在编译时使用序号。确保每个结构都有一个唯一的序号
的simples方法是行不通的,因为某种原因,静态变量不发生在编译时工作:
int nextOrdinal() {
static int ordinal;
return ordinal++;
}
struct S1 {
enum ordinal = nextOrdinal();
}
struct S2 {
enum ordinal = nextOrdinal();
}
如何创建的结构对我来说并不重要,在这一刻。问题似乎是在编译时不可能保留状态,我是否正确?
--Inspired by Boost.units dimensional analysis.
真的,我不认为有一种方法可以让编译器店的状态,但分配唯一的序数在编译时结构的一种方式。我会很快发布我的解决方案。 – Arlen 2012-08-03 18:04:23
如果程序员提供它们,当然。并且编译器检查唯一性应该是很有可能的,因为它无论如何都会这样做(例如,具有相同名称的同一模块中的两个结构体)。 – 2012-08-03 18:07:43
没错,但是你不能用结构来做,因为你可以拥有同名的局部和全局结构,并且不会产生编译时错误。 – Arlen 2012-08-03 18:11:12