Когда выполните следующие действия в GCC 4.8.2,C++ TypeId на операторе-члена класса() перегружает
class A
{
public:
void operator()(int);
void operator()(const std::string&) {}
};
std::cout << typeid(&A::operator()).name() << std::endl;
Это дает ошибку:
error: address of overloaded function with no contextual type information.
Он работает для других операторов-членов класса, такие как оператор ==. Это синтаксическая ошибка в вызове typeid() для A :: operator()?
РЕДАКТИРОВАТЬ: извините, мой плохой. Проблема возникает, когда имеется несколько перегруженных операторов().
Кажется [работа для меня] (http://rextester.com/PFM1036) –
Не может воспроизвести с помощью GCC 6.2 –
К сожалению, мой плохой. Отредактировал вопрос. Это происходит, когда имеется несколько перегруженных операторов(). – surfcode