Форум программистов, компьютерный форум, киберфорум
Наши страницы

Перехват значений параметров шаблона - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ OpenGL для новичка http://www.cyberforum.ru/cpp-beginners/thread932235.html
Всем привет. Никак не могу найти книгу по OpenGL и C++, хотя нет, вру, находил. Но они так сказать далеко не первой свежести. Я хотел бы написать змейку (в консоле с графикой), и вот думаю...
C++ Покер. Комбинация Стрит-флеш Написал функцию проверки на образование комбинации стрит-флеш....помидорами не закидывать писал не очень вдумчиво но здесь какие то ошибки при использовании алгоритмов STL и моей структуры(я так... http://www.cyberforum.ru/cpp-beginners/thread932234.html
Шаблоны STL C++
Здраствуйте. У меня задача такая: робота со стандарными шаблонами. Мне нужно заполнить контейнер пользовательским типом даных, тоесть класом. У меня написан клас (по возможности проверть перегрузку...
OpenGL, работа с освещением C++
Здравствуйте. Пробую себя в игростроении. Нарисовал трехмерный домик, физику сделал - можно бегать по поверхностям, прыгать, не проходить сквозь стены - все вроде бы работает. И тут встал вопрос об...
C++ Вывод символа из таблицы ASCII http://www.cyberforum.ru/cpp-beginners/thread932209.html
Всем добрый вечер! Небольшой ступор Пытаюсь в консоли вывести символ - 156 Это символ фунта (денежная единица). #include <iostream> .... cout << '\x9C' << endl; ....
C++ Математическая задачка В качестве f(x) использовать по выбору: sin(x), х , ех подробнее

Показать сообщение отдельно
Gorillych
14 / 14 / 1
Регистрация: 04.07.2013
Сообщений: 76

Перехват значений параметров шаблона - C++

01.08.2013, 22:18. Просмотров 359. Ответов 3
Метки (Все метки)

Вопрос, собственно, в развитие этой темы - Инициализация std::tuple переменным числом аргументов
Есть вот такой код:
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
39
40
41
42
43
namespace spec
{
    template <int... Idx>
    struct index { };
 
    template <int N, int... Idx>
    struct sequence : sequence<N - 1, N - 1, Idx...> { };
 
    template <int... Idx>
    struct sequence<1, Idx...> : index<Idx...> { };
}
template<int N> 
struct A
{
    A() : _N(N) {}
    template<int PrevN> void print_prevN(){std::cout<<PrevN<<std::endl;}
    int _N;
};
 
template<int N> 
struct B
{
    B(): _N(N){}
    template<int PrevN> void print_prevN(){std::cout<<PrevN<<std::endl;}
    int _N;
};
template<typename...Arg>
class HeterogenousContainer
{
public:
 
    void process(){process(spec::sequence<sizeof...(Arg)>());}
 
private:
    std::tuple<Arg...> elements;   
    template <int... Idx> void process(spec::index<Idx...>)//this function generates an error
    {auto aux = { (std::get<Idx>(elements).template print_prevN<std::get<Idx-1>(elements)._N>(), 0) ... };}
};
int main()
{  
   HeterogenousContainer<A<3>, B<4>, B<2>> obj;
   obj.process();
}
Здесь я хочу сделать так, чтобы каждый элемент последовательности, хранящейся в кортеже, мог обрабатывать шаблонный параметр предыдущего элемента через свою шаблонную функцию print_prevN. Я попытался сохранить параметр шаблона в переменну-член _N, но такая штука не комплируется - выражение
C++
1
std::get<Idx-1>(elements)._N>()
не является константным.
Подскажите, как можно выкрутиться?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru