Здравствуйте, 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 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.