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

Параметры типа класса шаблона - C++

Восстановить пароль Регистрация
 
levgen
 Аватар для levgen
3 / 3 / 2
Регистрация: 07.02.2013
Сообщений: 185
31.08.2015, 19:08     Параметры типа класса шаблона #1
смотрите был такой код в файле заголовочном:
C++
1
template <typename DataType> class CircleList {
.....................
а преподаватель изменил его и стал такой код:
C++
1
template <typename DataType, int K> class CircleList {
......................
и он задает вопрос такой:
можно ли среди параметров типа в шаблоне класс потребовать подстановку какойто константы и зачем оно понадобится?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
hoggy
5229 / 2120 / 404
Регистрация: 15.11.2014
Сообщений: 4,812
Завершенные тесты: 1
31.08.2015, 19:17     Параметры типа класса шаблона #2
Цитата Сообщение от levgen Посмотреть сообщение
ожно ли среди параметров типа в шаблоне класс потребовать подстановку какойто константы и зачем оно понадобится?
ну например так:


http://rextester.com/AJTG72666

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
#include <iostream>
 
 
// --- T - тип массива
// --- N - количество элементов
// вся информация выводится автоматически
template<class T, size_t N>
void view(const T (&arr)[N])
{
 
    std::cout<< "array = {";
    for(const auto& i: arr)
        std::cout<< i<<",";
    std::cout<< "}\n";
}
 
 
 
int main()
{
    std::cout << "Hello, world!\n";
    
    
    int ar[]={1,2,3};
    
    // --- размер массива выведется автоматически
    view(ar);
    
    float far[]={1.5f ,2.3f ,3.6f };
    view(far);
    
}
Добавлено через 48 секунд
Цитата Сообщение от levgen Посмотреть сообщение
можно ли среди параметров типа в шаблоне класс потребовать подстановку какойто константы и зачем оно понадобится?
1.
можно.

2.
100% инлайн функциальности времени компиляции.

3.
для нужд метапрограммирования.
rikimaru2013
C++ Game Dev
 Аватар для rikimaru2013
2137 / 970 / 223
Регистрация: 30.11.2013
Сообщений: 3,240
31.08.2015, 20:02     Параметры типа класса шаблона #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
template<int n>
class Factorial {
public:
    static const int f = Factorial<n - 1>::f * n;
};
 
template<>
class Factorial<0> {
public:        
    static const int f = 1;
};
 
int main() {
    std::cout << Factorial<5>::f << std::endl; // 120
}
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
31.08.2015, 20:17     Параметры типа класса шаблона #4
Цитата Сообщение от levgen Посмотреть сообщение
и он задает вопрос такой
Какой коварный тип!

Цитата Сообщение от levgen Посмотреть сообщение
можно ли среди параметров типа в шаблоне класс потребовать подстановку какойто константы и зачем оно понадобится?
Можно. Зачем? Круг задач весьма широк. В основном - метапрограммирование. Но есть и другие. Можно, например, какой-нить класс буфера фиксированной длины создать, длину в параметре шаблона задавать.

Ну или банально:
C++
1
2
template <bool v> class cassert;
template<> class cassert<true> {};
Yandex
Объявления
31.08.2015, 20:17     Параметры типа класса шаблона
Ответ Создать тему
Опции темы

Текущее время: 03:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru