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

Variadic templates and array - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Затруднения в составлении программы с условными операторами if.else.switch http://www.cyberforum.ru/cpp-beginners/thread1814219.html
Здравствуйте! Нужна ваша помощь в составлении программы с условными операторами if else После расчета первой системы уравнений ее промежуточный результат на форму, а только после этого...
C++ Блок-схемы операторов Подскажите, пожалуйста, как выглядит блок-схема операторов switch, while и for? Слышала, есть Американский стандарт по построению блок-схем, не могли бы поделиться ссылкой на документацию? ... http://www.cyberforum.ru/cpp-beginners/thread1814210.html
Сложение двух чисел в дополнительном коде C++
Доброго времени суток. Не могу сдлать задание до лабораторной роботы. Никогда раньше не сталкивался с такой задачей. Я знаю что двоичные числа нельзя использовать в плюсах по-умолчанию(только...
C++ Удаление динамических массивов
Здравствуйте, вобщем проблема в этом куске кода: int *makeDigits(int n) { int *digits = new int; int i = 2; while (n != 0) { digits = n % 10; n /= 10;
C++ Не могу составить программу http://www.cyberforum.ru/cpp-beginners/thread1814168.html
Помогите пожалуйста. Только начинаю программировать и что-то у меня не особо выходит. цифры данного четырехзначного числа N образуют строго возрастающую последовательность.
C++ Объясните как работает код и напишите комментарии к нему #include <iostream> #include <string> #include <cstdlib> using namespace std; int main() { int choise, colvo, temp; cout << "Enter the number of cars from 1 to 20:" << endl; подробнее

Показать сообщение отдельно
stzer
94 / 70 / 21
Регистрация: 26.10.2013
Сообщений: 221
Завершенные тесты: 2

Variadic templates and array - C++

26.09.2016, 19:37. Просмотров 122. Ответов 0
Метки (Все метки)

Всем привет. Такой вопрос, почему с закоментированными строками выдается ошибка?

error: undefined reference to `fact_array_impl<0ul, 1ul, 2ul, 6ul, 24ul, 120ul>::value'

Причем некоторые компиляторы "кушают" нормально.

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
#include <iostream>
 
template<size_t n>
struct factorial
{
    enum { value = n * factorial<n-1>::value };
};
 
template<>
struct factorial<0>
{
    enum { value = 1 };
};
 
template<size_t n, size_t ...args>
struct fact_array_impl
{
    static constexpr auto& value = fact_array_impl<n - 1, factorial<n>::value, args...>::value;
};
 
template<size_t ...args>
struct fact_array_impl<0, args...>
{
    static constexpr size_t value[] = { 1, args... };
};
 
//            template<size_t ...args>
//            constexpr size_t fact_array_impl<0, args...>::value[];
 
template<size_t n>
struct fact_array
{
    static constexpr auto& value = fact_array_impl<n>::value;
};
 
int main()
{
    std::cout << fact_array<5>::value[4] << std::endl;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru