Я хотел бы определить тип хранения внутри специализации. Но в некоторых случаях у меня нет ничего, чтобы действительно определить, т. Е. Не существует типа хранилища для определенных специализаций. Конечно, использование типа void не так, но я ищу что-то подобное. Я не уверен, что я направляюсь в правильном направлении - одним из способов может быть просто использование логического типа, поскольку оно занимает наименьшее пространство. Каким был бы правильный/хороший способ преодолеть это. Я не уверен, была ли задана такая проблема. Я не знал, что искать!Специализация специальности
template<typename T>
struct Traits
{
}
template<>
struct Traits<TypeA>
{
typedef std::vector<double> storage;
}
template<>
struct Traits<TypeB>
{
typedef std::vector<string> storage;
}
template<>
struct Traits<TypeC>
{
//I do not want to specify a storage type here. More like it does not exist.
//So what is the correct way to define such a type
typedef ??void?? storage;
}
int main()
{
typename Traits<TypeA>::storage myType;
/*
do domething
*/
}
Что произойдет, если вы попытаетесь использовать «Черты :: storage'? –
Ничто в классе признаков не может удалить объявление переменной из main. Если вы фактически используете хранилище в другом классе (например, для переменной-члена), а не внутри основного, вам нужно будет специализироваться на этом классе. В противном случае ваше объявление переменной ожидает тип, поэтому вы можете указать один (даже если это фиктивный тип). – Oguk
@ T.C. Как сказал Огук, я намерен использовать тип хранилища в другом классе. – itachi