У меня есть шаблонный класс, как в этом примере:
template<class T>
struct Storage {
void Push(const T& src) {
store[i++] = src; //Is not possible, when T is Tuppel Type
}
T store[10];
int i = 0;
};
Storage<int> ok;
typedef int Tuppel[2];
Storage<Tuppel> nok;
void test() {
int a = 42;
Tuppel b = { 1,2 };
ok.Push(a);
nok.Push(b); //Will fail
}
Как сделать этот шаблон действительным? Параметр шаблона T
должен иметь одно из следующих значений:
- Тип примитива
- Тип объекта (
store[i++] = src
должен вызывать оператор присваивания) - Типы массивов, такие как
Tuppel
в примере (store[i++] = src
должен вызывать оператор присваивания для каждого элемента массива)