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

Вызов шаблонного метода в зависимости от условия - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Печать текстового файла http://www.cyberforum.ru/cpp-beginners/thread1226239.html
Пытаюсь распечатать текстовый файл. Использую шаги и функции как написано в MSDN: To begin a print job, call StartDocPrinter. To begin each page, call StartPagePrinter. To write data to a page,...
C++ Подскажите самую лёгкую среду или блокнот с компилятором Друзья! Довольно долго писал под линуксом (sublime + консоль). Теперь вернулся на винду и ищу среду. После блокнота и консоли все кажется тяжёлым и не нужным. Следовательно вопрос: подскажите самую... http://www.cyberforum.ru/cpp-beginners/thread1226222.html
C++ Разобраться с рекурсивной функцией обхода бинарного дерева
Люди, помогите разобраться с рекурсивной функцией обхода бинарного дерева. Бьюсь головой об стену, не могу понять как она работает. вот метод класса Tree для обхода дерева: void...
Свой компаратор для контейнера set C++
Здравствуйте! Код следующий (комменты): #include <stdlib.h> #include <stdio.h> #include <set> using namespace std; // структура state, содержит массив с двумя элементами и компаратор
C++ Добавить данные в файл http://www.cyberforum.ru/cpp-beginners/thread1226204.html
С начале программы (игры) вводится имя игрока, которое записывается в файл. Затем игра и счет (int). Как записать этот счет в тот же файл?
C++ Зачем в классе private? Объясните пожалуйста кто-нибудь зачем в классе private? что он делает? и почему его не в public поставить зачем приват? Тексты надо перепечатывать внутрь сообщения! подробнее

Показать сообщение отдельно
DiffEreD
1431 / 768 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2

Вызов шаблонного метода в зависимости от условия - C++

12.07.2014, 01:11. Просмотров 407. Ответов 11
Метки (Все метки)

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
40
41
42
43
44
45
#include <iostream>
#include <stack>
#include <queue>
#include <type_traits>
 
template<typename T>
class has_front {
 
   template<typename R>
   struct checker {};
 
   template<typename S>
   static std::false_type check(...);
 
   template<typename S>
   static std::true_type check(checker<decltype(std::declval<S>().front())> *);
 
public:
   static constexpr bool value = std::is_same<decltype(check<T>(nullptr)), std::true_type>::value;
};
 
template <typename T>
void print(T conteiner, bool has_front)
{
   if (has_front) {
      std::cout << "front method enable.\n";
      std::cout << conteiner.front() << "\n";
   }
   else {
      std::cout << "front method disable.\n";
      std::cout << conteiner.top() << "\n";
   }
}
 
 
int main()
{
   std::stack<int>     st{ {1,2,3,4} };
   std::queue<double>  qu{ {1.1, 2.2, 3.3, 4.4} };
   print(st, has_front<decltype(st)>::value);
   print(qu, has_front<decltype(qu)>::value);
 
   system("pause");
   return 0;
}
Что то я не соображу как это сделать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru