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

Сравнение типов шаблонных классов - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Объявление внешней функции в namespace http://www.cyberforum.ru/cpp-beginners/thread957233.html
Собственно в файле 1 есть функция namespace Calculation { void Calc() {} } В файле 2: extern void Calculation::Calc(); ... Calculation::Calc();
C++ Комбинаторика и переборные алгоритмы День добрый! Подскажите пожалуйста, как программно найти кол-во перестановок, размещений и сочетаний двух чисел, введенных с клавиатуры? http://www.cyberforum.ru/cpp-beginners/thread957230.html
C++ Составить программу для вычисления решений системы неравенств
Для произвольных значений a,b вычислить решение системы неравенств. a/x>=b b*x<=0
C++ Шаблон функции поиска максимального элемента
Шаблон функции поиска максимального элемента массива задается след.образом: template <typename T> T max(T *x, int len) { T max=x; for(int i=0;i<len; i++) if(max<x) max=x; return max; }
C++ Друзья, подскажите, как в классе создать константное поле, ссылочное поле и объектное поле? http://www.cyberforum.ru/cpp-beginners/thread957185.html
Препод на защите лабораторной по классам дал задание большое. В общем-то все пункты я знаю как делать, кроме этого. Вот что такое константное поле и как его задать я знаю (const int a например). А что за ссылочное и объектное поле? Ссылочное - это указатель просто объявить что ли или что? На что должно ссылаться оно? С++ по книге Павловской учу (на более объемную книгу времени не хватает у...
C++ Сортировка по одному из полей std::vector Подскажите пожалуйста! Задача: Имеется класс Person с полями: Family, Name, BirthDay, Sex, ExperienceTime (Фамилия, имя, дата рождения, пол, опыт работы). Нужно реализовать контейнер (для сущностей Person) с методом сортировки: sortX(Order order). Вспомогательная структура Order: имя поля сортировки, порядок сортировки (bool) Дополнительное указание: использовать стандартный метод (или... подробнее

Показать сообщение отдельно
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
12283 / 6970 / 784
Регистрация: 27.09.2012
Сообщений: 17,282
Записей в блоге: 2
Завершенные тесты: 1
18.09.2013, 19:51     Сравнение типов шаблонных классов
Первое что пришло в голову:
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>
 
 
template<int m, int n>
struct A {
  typedef A IS_A_STRUCT;
};
 
template<int m, int n>
struct B {
 
};
 
 
template < typename T >
bool inline is_a_struct ( const typename T::IS_A_STRUCT & ) {
  return true ;
}
 
 
template < typename T >
bool inline is_a_struct ( const T& ) {
  return false ;
}
 
 
int main ( ) {
  A<7,9> a ;
  B<9,8> b ;
  A<10,2> a2 ;
  std::cout << is_a_struct<decltype(a)> ( a ) << std::endl ;  
  std::cout << is_a_struct<decltype(a2)> ( a2 ) << std::endl ;
  std::cout << is_a_struct<decltype(b)> ( b ) << std::endl ;
}
Добавлено через 16 минут
Так, наверное, даже приятнее на вид будет:
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
#include <iostream>
 
 
template<int m, int n>
struct A {
  typedef A IS_A_STRUCT;
};
 
template<int m, int n>
struct B {
 
};
 
template < typename T >
bool constexpr is_a_struct_impl ( const typename T::IS_A_STRUCT & ) {
  return true ;
}
 
template < typename T >
bool constexpr is_a_struct_impl ( const T & ) {
  return false ;
}
 
template < typename T >
bool constexpr is_a_struct ( const T & src ) {
  return is_a_struct_impl < T > ( src ) ;
}
 
 
int main ( ) {
  A<7,9> a ;
  B<9,8> b ;
  A<10,2> a2 ;
  std::cout << is_a_struct ( a ) << std::endl ;  
  std::cout << is_a_struct ( a2 ) << std::endl ;
  std::cout << is_a_struct ( b ) << std::endl ;
}
 
Текущее время: 16:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru