Zwei template Variables in Kompilierungszeit multiplizieren

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Zwei template Variables in Kompilierungszeit multiplizieren
Hallo Kollegen,

ich möchte gerne zwei template variablen in Kompilierungszeit miteinander (z.B multiplizieren) und ein std::array<T,(ergebnis der mul)> initialisieren.
Ich hab mit constexpr versucht, es hat leider nicht funktionniert …

Hat jemand vielleicht eine Idee ? :huh:
Vielen Dank und schöne Grüße


Meinst du sowas?

// g++ -std=c++14 -Wall -Wextra -pedantic foo.cpp -o foo
#include <array>
#include <iostream>

template<unsigned R, unsigned C>
class Foo {
public:
	std::array<int, R*C> data;
};

int main() {
	Foo<3,5> f {};
	std::cout << sizeof(f.data) / sizeof(decltype(f.data)::value_type) << std::endl;
}
1 „Gefällt mir“

danke für deine Antwort!

Fast. Ich möchte diese r*c noch in eine Variable speichern und mehrmals benutzen…


    #include <array>
    #include <iostream>
     
    constexpr int b = 2, c = 3;
    constexpr int a = b * c;
     
    class Foo {
    public:
        std::array<int, a> data;
    };
     
    int main() {
        Foo f {};
        std::cout << sizeof(f.data) / sizeof(decltype(f.data)::value_type) << std::endl;
    }

http://ideone.com/NKkRMJ

Die Variablen, mit der du die [m]constexpr[/m] initialisierst, müssen natürlich auch constexpr sein.

1 „Gefällt mir“