Здравствуйте, 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>}