Es ist gängige Praxis declarate mit/typedef der aktuellen Art innerhalb einer Template-Klasse:C++ Name Stromart innerhalb Vorlage
template <typename T1, typename T2 = std::vector<T1>, typename Allocator>
class my_class {
//...
public:
using my_class_t = my_class<T1, T2, Allocator>; //1
my_class_t operator()(); //2
//...
}
ich alleine habe bemerkt, dass es sehr komfortable Lösung ist, zu schreiben dass mit() zu verhindern, dass komplizierte Art jedes Mal neu schreiben - z zeigt, dass es viel einfacher gemacht werden kann. Meine Fragen:
- Gibt es eine dokumentierte Konvention was apriopriate Name für diesen Typ ist (
type
,my_class_t
, ...)? - Gibt es irgendeine Methode, um diese Deklaration zu erleichtern (etwas wie vordefiniert this_t, vielleicht in neuen Standards)?
Viele Klassen in der Standardbibliothek tut dies geschrieben worden sein könnte, so ja, ich würde sagen, es ist durchaus üblich. Siehe z.B. der Abschnitt [Member-Typen dieser Referenz »std :: vector«] (http://en.cppreference.com/w/cpp/container/vector#Member_types). –
** 2 ** ist kein gutes Beispiel, da Sie 'my_class' einfach ohne Argumente für das exakt gleiche Ergebnis verwenden können. Aber ich stimme zu, dass es Fälle gibt, in denen es nützlich ist. –
Innerhalb einer Klassenvorlage können Sie einfach den Namen verwenden, d. H. Ihr 'using'-Alias könnte als' using my_class_t = my_class' geschrieben worden sein. –