template < unsigned int i >
struct t {
static const char *s;
};
template < unsigned int i >
const char* t<i>::s = ...;
wobei ...
ist "0 1 2 ... i-1", zum Beispiel "0 1 2 3 4" für i == 5
.
Ist dies möglich? (Bitte keine Lösungen, die dies zur Laufzeit tun!)
- Die Frage wurde aus Neugier gestellt (mit Präprozessormakros/Konstanten wäre es einfach, aber wie sieht es mit Vorlagenparametern aus)?
- Die Bedeutung ist: zur Kompilierzeit erzeugtes String-Literal. Ich sehe jetzt, dass
const
erzwingt dies nicht, sondern kann jede beliebige zur Laufzeit ausgewertete Funktion für die Zeichenkettenerzeugung verwenden.