Re[2]: remove const
От: Sergey Россия  
Дата: 18.01.05 16:23
Оценка:
Здравствуйте, ReV01VeR, Вы писали:

RVV>Работает на VC7.1:


RVV>
RVV>#include <iostream>
RVV>#include <typeinfo>

RVV>typedef int (FType)(int, double) const;

RVV>class Foo;

RVV>template <typename T>
RVV>struct Unconst;

RVV>template <class T, typename R, typename A1, typename A2>
RVV>struct Unconst<R (T::*)(A1, A2) const>
RVV>{
RVV>  typedef R (Type)(A1, A2);
RVV>};
RVV>template <class T, typename R, typename A1, typename A2>
RVV>struct Unconst<R (T::*)(A1, A2)>
RVV>{
RVV>  typedef R (Type)(A1, A2);
RVV>};

RVV>int _tmain(int argc, _TCHAR* argv[])
RVV>{
RVV>    std::cout << "FuncType:      " << typeid(FType).name() << std::endl;
RVV>    std::cout << "MembType:      " << typeid(FType Foo::*).name() << std::endl;
RVV>    std::cout << "Unconsted:     " << typeid(Unconst<FType Foo::*>::Type).name() << std::endl;
RVV>    std::cout << "MembUnconsted: " << typeid(Unconst<FType Foo::*>::Type Foo::*).name() << std::endl;
RVV>    std::cin.get();
RVV>    return 0;
RVV>}
RVV>


RVV>Только специализации на каждое количество аргументов писать придется ...


В конечном счете (когда по-настоящему потребовалось поддерживать константные методы) так и пришлось сделать.
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.