================ Lösungsvorschlag ================ Zur ersten Frage: `typename` war notwendig, damit der Übersetzer bei der syntaktischen Analyse von `GeMatrix::Index` erkennt, dass es sich dabei um einen Typnamen handelt. Zwar weiß der Übersetzer bei dem Template, dass `GeMatrix` ein Typ ist, jedoch bleibt vor einer Instantiierung verborgen, um was es sich bei `GeMatrix::Index` handeln könnte. Zur zweiten Frage: So könnte `init_complex_value` aussehen: ---- CODE (type=cpp) ---------------------------------------------------------- template std::complex init_complex_value(Index i, Index j, Index m, Index n) { return std::complex(T(i), T(j)); } ------------------------------------------------------------------------------- Und der zugehörige Aufruf: ---- CODE (type=cpp) ---------------------------------------------------------- GeMatrix> B(2, 3, StorageOrder::ColMajor); initGeMatrix(B, init_complex_value); ------------------------------------------------------------------------------- Zum dritten Teil: Hier ist die angepasste Funktion in `bench.h`: ---- CODE (type=cpp) ---------------------------------------------------------- template void initGeMatrix(Index m, Index n, T *A, Index incRowA, Index incColA, InitValue initValue) { for (Index j=0; j void initGeMatrix(GeMatrix &A, InitValue initValue) { bench::initGeMatrix(A.m, A.n, A.data, A.incRow, A.incCol, initValue); } ------------------------------------------------------------------------------- Hier sind alle Dateien zum Lösungsvorschlag: :import: session11/step02/bench.h :import: session11/step02/gematrix.h :import: session11/step02/test_initmatrix.cpp :navigate: up -> doc:index back -> doc:session11/page01 next -> doc:session11/page03