Beachten Sie Folgendes:öffentlicher Zugang von Vorlagen Wert
template<int T>
class Test {
public:
constexpr static int A = T;
};
int main(int argsc, char** args) {
std::cout << Test<2>::T << std::endl; // Option 1
std::cout << Test<2>::A << std::endl; // Option 2
}
Warum funktioniert die Option 1 Kompilierung? Es scheint, dass die static constexpr A
nur ein zusätzlicher Schritt ist. Ist T
nicht öffentlich verfügbar?
Gibt es einen saubereren Weg, um T
zu bekommen, als durch Erstellen eines öffentlich zugänglichen Mitglieds wie A
oben?
Sie können nicht auf die Vorlagenparameter außerhalb der Klasse zugreifen. – plasmacel
@plasmacel - warum ist das wahr? Der Schritt zum Erstellen von "A" scheint unnötig. – Jack
Sie können auch ein Merkmal erstellen, mit dem Vorlagenparameter abgerufen werden können. 'Vorlage TestTrait; Vorlage TestTrait > Struktur {constexpr statisch int Wert = N; }; ' –
Jarod42