8 Stimmen

c++: Erzeugung von String-Literalen aus Template-Parametern

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.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X