Leiten Sie den Typ der Mitgliedsvorlage aus der Klassenvorlage ab, verschiedene Typen
Posted: 07 Jan 2025, 10:26
Ich habe die folgenden Kurse. Ich möchte „class First“ mit einer Vorlage haben und je nach Typ den Typ für „class Second“ festlegen, wie folgt.
Ich kann es so zum Laufen bringen, würde aber Folgendes lieber vermeiden:
Ich habe versucht, etwas mit constexpr zum Laufen zu bringen. Ich glaube, ich könnte std::conditional_t verwenden, aber es sieht nicht sauber aus, da std::conditional eine Verschachtelung im Vorlagenaufruf erfordert.
Code: Select all
template
class Second
{
public:
T Get(T t)
{
return t;
}
};
template
class First
{
public:
// if T=double --> vector, if T=string --> long
Second second;
};
int main()
{
First first; // compile error, not in list
auto val = first.second.Get(1);
}
Code: Select all
#include
#include
#include
template
class Second
{
public:
T Get(T t)
{
return t;
}
};
template
class First
{
public:
Second second;
};
int main()
{
First a;
First b;
}