I'm using the following program:
In the main function, I want to print the address of the poll_timer function.
The program compiles and runs successfully with clang but not with GCC.
I get the following error with GCC
"709568706/source.cpp: In function ‘int main()’:
709568706/source.cpp:28:32: error: invalid use of member function ‘static void MessagePoller::poll_timer()’ (did you forget the ‘()’ ?)
std::cout << (void*)m_sut->poll_timer << std::endl;
~~~~~~~^~~~~~~~~~"
#include <iostream>
#include <memory>
class MessagePoller
{
protected:
static void poll_timer()
{
std::cout << "Poll timer Base called\n";
}
};
class TestMessagePoller : public MessagePoller
{
public:
using MessagePoller::poll_timer;
};
typedef std::shared_ptr<TestMessagePoller> TestMessagePollerPtr;
int main()
{
TestMessagePollerPtr m_sut;
m_sut = TestMessagePollerPtr(new TestMessagePoller());
std::cout << "HERE1\n";
m_sut->poll_timer();
std::cout << (void*)m_sut->poll_timer << std::endl;
return 0;
}
I have tried one thing, removing the "using" statement and changing the access of the poll_timer to public and that worked. But I would like to know what is going on with the program as is.