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

Явная специализация, зачем она нужна?(Шаблоны функций) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Bool http://www.cyberforum.ru/cpp-beginners/thread923755.html
Обьясните мне, как они pаботают и где их пpименять =( Вот с помощью учебника написал пpогу #include "stdafx.h" #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv) { int a=2;
C++ Задачка на вывод чисел на естественном языке Составить программу, которая читает натуральное число в десятичном представлении, а на выходе выдаёт это же число в десятичном представлении и на естественном языке. вот от 0-99 получилось вроде как, а вот с сотнями не получается. Делал через массивы. Если кому не сложно, исправьте что не так, ну или скажите как правильно сделать. Вот код. #include<stdio.h> #include<math.h>... http://www.cyberforum.ru/cpp-beginners/thread923712.html
Змейка C++
Можно пожалуйста самую простую змейку консольную на c++ вобще самую простую без очков без всяких дополнений просто змейка ограда для нее и яблочко
Ошибка в простой программе C++
#include<iostream> #include<string> using namespace std; string recyrs() { string parol,parol1="12345"; cout << "Vvedit parol" <<endl; cin >> parol;
C++ Модель движения КА в центральном поле тяготения http://www.cyberforum.ru/cpp-beginners/thread923700.html
Модель движения КА в центральном поле тяготения Рассмотрим модельную задачу, которая в небесной механике называется задачей двух тел и изучает движение двух материальных точек под действием силы их взаимного притяжения. В задаче двух тел учитывается только единственная сила – сила ньютоновского взаимодействия. Для исследования движения КА относительно небесного тела предположим, что масса КА...
C++ Создание и вызов файла с описанием функции #include "iostream" #include <stdlib.h> #include <time.h> #include <ctype.h> #include <string.h> void task(int ); void dispensation (const int*,int ,int ,int); int main() подробнее

Показать сообщение отдельно
Artimosha
0 / 0 / 0
Регистрация: 30.06.2013
Сообщений: 12
16.07.2013, 22:58  [ТС]     Явная специализация, зачем она нужна?(Шаблоны функций)
и кстати, код с варианта 3 уже не запускается. qt выдает:
template<class T> // (b) a second base template, overloads (a)
void f( T* );

с++ становится безопаснее и безопаснее) радует)
кстати, возможно отсюда и вывод, что в том случае ту явную специализацию вызвать невозможно, отсюда, наверное, и ошибка... предполагаю так...

Добавлено через 55 минут
чуть еще с кодом перепробывал, вообщем так:
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
#include <iostream>
 
using namespace std;
template<class T> 
void f( T );
 
template<>        
void f<int*>(int*);
 
template<class T> 
void f( T * );
 
int main()
{
    int *p;
    f<int*>(p);
    cout << "Hello World!" << endl;
    return 0;
}
 
template<class T>
void f( T ){
    cout << "1!" << endl;
}
 
template<class T>
void f( T* ){
    cout << "3!" << endl;
}
 
template<>
void f<int*>(int* rak){
    cout << "2!" << endl;
}
использует шаблон первый, по нему строит функцию(явное создание экземпляра тут выходит равно явной специализации, т.е. вывело "2!").

а вот если использовать тот же код, что и в книге т.е. в скобках указать пустоту(или, как было замечено убрать их вообще), т.е. будем иметь:
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
#include <iostream>
 
using namespace std;
template<class T> 
void f( T );
 
template<>        
void f<>(int*);
 
template<class T> 
void f( T * );
 
int main()
{
    int *p;
    f<int*>(p);
    cout << "Hello World!" << endl;
    return 0;
}
 
template<class T>
void f( T ){
    cout << "1!" << endl;
}
 
template<class T>
void f( T* ){
    cout << "3!" << endl;
}
 
template<>
void f<>(int* rak){
    cout << "2!" << endl;
}
то выдает ошибку:
D:\projects\untitled\main.cpp:32: ошибка: specialization of 'void f(T*) [with T = int]' after instantiation

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