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

Шаблонные функции только для определённых типов! - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Типизированный файл. Сведения о студентах. Стипендия http://www.cyberforum.ru/cpp-beginners/thread766865.html
Привет) у меня такая задача на туже тему, помогите исправить Вот условие Сформировать типизированный файл, в котором хранятся результаты сессии группы: факультет, группа, семестр, ФИО...
C++ F A S M Помогите пожалуйста! Я увлекаюсь программированием, и скачал FASM, как знаете, он открытый проект. Так вот, я хочу изменить этот FASM и выместить в интернете с сcылкой на источник - официальный сайт... http://www.cyberforum.ru/cpp-beginners/thread766861.html
Си-идентификатор C++
необходимо проверить является ли строка си-идентификатором. какие для этого критерии существуют? 1. первый символ не может быть цифрой 2. любой символ - , , , _ это, что я знаю. вопросы:...
C++ Времена года и месяцы
Написать программу, которая выводит на экран приглашение: «Введите месяц», вводит с клавиатуры число X, имеющее смысл месяца, и печатает слова «Зима», «Весна», «Лето» или «Осень» в зависимости от...
C++ Как представляются двумерные массивы? http://www.cyberforum.ru/cpp-beginners/thread766834.html
Создал двумерный массив. И немного не врубаюсь. Если пиши вот так вот mas выводит 0, если вот так вот mas, то выводит 10. Ну а если вот так вот mas, то выводит 10. Собственно как я понял, что в...
C++ Разработать наследование классов прямоугольный треугольник от треугольник Разработать наследование классов прямоугольный треугольник от треугольник подробнее

Показать сообщение отдельно
popelyuk
8 / 8 / 1
Регистрация: 04.12.2012
Сообщений: 130
20.01.2013, 13:50  [ТС]
Цитата Сообщение от Nick Alte Посмотреть сообщение
Объявить эту функцию, но не определять. Определить только конкретные специализации (не забываем, что для шаблонных функций запрещена частичная специализация, вместо неё используют перегрузки).
Пример:
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
 // В файле myprint.h
// Общая форма функции
template<typename T> void print(T value);
// Чтобы компилятор не пытался инстанциировать, пообещаем ему специализации
template<> void print<int>(int);
template<> void print<double>(double);
 
// В файле myprint.cpp
template<> void print<int>(int value)
{
    printf("%d", value);
}
 
template<> void print<double>(double value)
{
    printf("%f", value);
}
 
// в файле main.cpp
#include "myprint.h"
 
int main()
{
    const int a = 1;
    const double b = 2;
    print(a);
    print(b);
}
Добавлено через 9 минут
В C++11 есть такая вещь, как extern template, подавляющая неявную инстанциацию в надежде, что где-то есть явная.
Всё это конечно хорошо, но опять же теряется смысл в объявлении как template, ведь это по сути ничем не отличается от объявления двух перегруженных не template функций и если что-то нужно будет изменить придется менять в обоих, смысл тогда заморачиваться с template'ми?
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru