Форум программистов, компьютерный форум 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++ Разработать наследование классов прямоугольный треугольник от треугольник Разработать наследование классов прямоугольный треугольник от треугольник подробнее

Показать сообщение отдельно
Nick Alte
Эксперт С++
1637 / 1009 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
20.01.2013, 13:44
Цитата Сообщение от popelyuk Посмотреть сообщение
как для template функции генерировать только определённые инстанации?? И запрещать генерировать остальные?
Объявить эту функцию, но не определять. Определить только конкретные специализации (не забываем, что для шаблонных функций запрещена частичная специализация, вместо неё используют перегрузки).
Пример:
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, подавляющая неявную инстанциацию в надежде, что где-то есть явная.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru