Форум программистов, компьютерный форум CyberForum.ru

Необходимо хранить список типов, и пользоваться ими, например, вызывать конструкторы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Неправильная длина строки при передаче в функцию http://www.cyberforum.ru/cpp-beginners/thread1245371.html
странная работа компилятора(строки) в кратце проблема выглядет так определяем переменную типа широкой строки считаем ее длину передаем указатель строки в функцию и в ней уже длина строки считается неправильно!
C++ Парсер текста: прочитать файл и поместить данные в массив Есть файл map.txt А там в строчку написаны циферки с пробелами 0 0 1 1 1 0 0 0 1 1 1 1 1 0 0 0 1 1 1 0 0 0 0 12 12 12 0 0 Как прочитать данную cut прочитать и запихнуть в массив? И еще, есть у кого рабочий парсер json http://www.cyberforum.ru/cpp-beginners/thread1245364.html
C++ Используя класс list, в котором храняться фамилии студентов группы, организовать поиск по фамилии
Дали задание: используя класс list, в котором храняться фамилии студентов группы, организовать поиск по фамилии. Не могу создать list с уже заданным содержимым.
C++ Програмка выдает неправильное значение
Здравствуйте форумчане, относительно недавно стал изучать C++ как хобби. Изучив немного операторов решил закрепить знания написав небольшую игру-программку. Создавал в CODE::BLOCKS под Windows xp. Программка компилируется, но выдает неверный результат. Там есть статический массив в котором заранее определено значение эл-ов, но в одной функции значение не находится и программа выдает о своем...
C++ Ошибка "конструкторы не разрешены для возвращаемого типа" http://www.cyberforum.ru/cpp-beginners/thread1245317.html
Создаю класс: class main_ { public: main_(); ~main_(); } за классом пишу: main_::main_() {
C++ Как быть когда нужно вернуть NULL? Как быть если нужно чтобы функция в некоторых условиях возвращала NULL, а не возвращаемый тип? подробнее

Показать сообщение отдельно
DrOffset
6461 / 3835 / 886
Регистрация: 30.01.2014
Сообщений: 6,630
21.08.2014, 20:50     Необходимо хранить список типов, и пользоваться ими, например, вызывать конструкторы
Цитата Сообщение от relationer Посмотреть сообщение
Мне необходима длина, перечисление, проч. от этого списка типов.
Это все можно обеспечить через variadic templates.
Вообще, в С++11 нет надобности реализовывать список типов как-то отдельно (например через кортежи, как у Александреску, хотя с С++11 и это сделать гораздо проще теперь). Достаточно написать:
C++
1
2
template <typename ...Types>
struct type_list;
Это и будет простейшим списком типов. Теперь к нему можно написать функцию получения по индексу, поиска и длины. Если нужно, могу показать как.

Добавлено через 20 минут
relationer,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// Список типов
template <typename ...Types>
struct type_list;
 
// Элемент по индексу
template <typename T, size_t I>
struct type_at;
 
template <typename T, typename... Args, size_t I>
struct type_at<type_list<T, Args...>, I>
{
    typedef typename type_at<type_list<Args...>, I - 1>::type type;
};
template <typename T, typename... Args>
struct type_at<type_list<T, Args...>, 0>
{
    typedef T type;
};
// Длина
template <typename T>
struct type_list_length;
 
template <typename... Args>
struct type_list_length<type_list<Args...>>
{
    enum { value = sizeof...(Args) };
};
 
int main()
{
    typedef type_list<int, char, bool> list3;
 
    std::cout << std::boolalpha
              << "Second element is int:  " << std::is_same<int, type_at<list3, 1>::type>::value  << '\n'
              << "Second element is char: " << std::is_same<char, type_at<list3, 1>::type>::value << '\n';
 
    std::cout << "List length: " << type_list_length<list3>::value << std::endl;
}
 
Текущее время: 07:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru