Конструкция C ++, которая ведет себя как макрос __COUNTER__ [duplicate]

На этот вопрос уже есть ответ здесь:

Поддерживает ли C ++ счетчики времени компиляции? 7 ответов

У меня есть набор классов C ++, и каждый из них должен объявить уникальный последовательный идентификатор в качестве константы времени компиляции. Для этого я использую__COUNTER__ встроенный макрос, который преобразуется в целое число, которое увеличивается при каждом его появлении. Идентификаторы не должны следовать строгому порядку. Единственное требование - они последовательные и начинаются с 0:

class A {
public:
    enum { id = __COUNTER__ };
};

class B {
public:
    enum { id = __COUNTER__ };
};

// etcetera ...

Мой вопрос: есть ли способ достичь того же результата с помощью конструкции C ++, такой как шаблоны?

Ответы на вопрос(4)

Ваш ответ на вопрос