Ich denke, dass es nicht möglich ist, aber ich möchte dich fragen, bevor du darüber aufgibst.Constexpr Tricks
Ich möchte so etwas wie ein Constexpr Inkrement.
#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;
}
Ich will es in einigen Klassen nennen nicht manuell (ich benutze CRTP dafür), eine andere Art zu jedem von ihnen zu geben, aber die Art müssen const sein. Gibt es in C++ sowieso sowas zu erreichen? (C++ 17 + TS)
* "Ich denke, es ist nicht möglich" * Grundsätzlich ist alles mit C++ - Vorlagen möglich, es wird manchmal einfach dumm komplex. –
Ich bin mir nicht sicher, aber ich denke, es könnte ein Teil von C++ 17 sein, aber ich kann falsch liegen – holmicz
Es gibt nicht-Standard 'COUNTER' Makros, und es gibt Implementierungen von Kompilierzeit Nebenwirkungen ([Filip Roseen ] (http://b.atch.se/) fällt mir ein). Letztere sind jedoch extrem hässlich. Ich würde lieber einen anderen Ansatz ausprobieren. – dyp