История изменений
Исправление victor79, (текущая версия) :
Чуть погодя пришло такое решение на ум:
int& global_counter() {
static int r = 0;
return r;
}
template <class T>
int global_template_ident() {
static int r = ++global_counter();
return r;
}
позже получать его в базовом через виртуальный метод и проверять
template <class T>
struct B : public A {
int template_ident() override {
return global_template_ident<T>() }
};
...
A* r = ...;
assert( r->template_ident() == global_template_ident<T>() );
Есть ли у такого метода недостатки или что другое будет лучше?
Исходная версия victor79, :
Чуть погодя пришло такое решение на ум:
int& global_counter() {
static int r = 0;
return r;
}
template <class T>
int global_template_ident() {
static int r = ++global_counter();
return r;
}
позже получать его в базовом через виртуальный метод и проверять
template <class T>
struct B {
int template_ident() override {
return global_template_ident<T>() }
};
...
A* r = ...;
assert( r->template_ident() == global_template_ident<T>() );
Есть ли у такого метода недостатки или что другое будет лучше?