Я думаю, что это невозможно, но я хотел бы спросить вас, прежде чем сдаваться.Constexpr трюки
Я хочу что-то вроде приращения constexpr.
#include <iostream>
constexpr int inc() {
static int inc = 0;
return inc++;
}
class Foo {
static const int Type = inc();
};
class Foo2 {
static const int Type = inc();
};
int main() {
std::cout << "Foo1 " << Foo1::Type << st::endl;
std::cout << "Foo2 " << Foo2::Type << st::endl;
return 0;
}
Я хочу назвать его в некоторых классах не вручную (я использую CRTP для этого), чтобы дать другой тип для каждого из них, но тип должен быть константной. В любом случае, для достижения чего-либо подобного в C++? (C++ 17 + TS)
* «Я думаю, что это невозможно» * В принципе все возможно с шаблонами C++, иногда это иногда становится глупо сложным. –
Я не уверен, но я думаю, что это может быть часть C++ 17, но я могу ошибаться – holmicz
Существуют нестандартные макросы 'COUNTER', и есть реализации побочных эффектов компиляции ([Filip Roseen ] (http://b.atch.se/) приходит на ум). Однако последние крайне уродливы. Я предпочел бы попробовать другой подход. – dyp