Re[2]: Сравнить типы в compile time
От: D189D  
Дата: 21.06.06 06:56
Оценка:
Здравствуйте, Bell, Вы писали:

B>Вариант с шаблонами:

B>
B>template <class T1, class T2>
B>struct same_type
B>{
B>   enum { val = 0 };
B>};

B>template<class T>
B>struct same_type<T, T>
B>{
B>   enum { val = 1 };
B>};

B>template<class T1,class T2>
B>void f() {
B>  if(same_type<T1, T2>::val) {
B>    // 1
B>  }
B>  else {
B>    // 2
B>  }
B>}
B>


1 и 2 все равно будут компилироваться (хотя быть может не будут выполняться в run-time)
может так?

template<bool> void F()
{
    // 2
}

template<> void F<true>()
{
    // 1
}

template<class T1,class T2>
B>void f() {
    F<some_type<T1,T2>::val>();
B>}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.