This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Template argument (pointer to member function) initialization with NULL


Hi,

In the following code:

class A {
public:
    void SomeMethod() { }
};

template <class T, void (T::*SomeMethod)() = 0>
class B {

};

B<A> b1; // error: could not convert template argument '0' to 'void (A::*)()'

B<A, 0> b2; // error: could not convert template argument '0' to 'void (A::*)()'

void (A::*someMethod)() = 0; // OK

there are two compilation errors. AFAIK per C++ standard 0 is a valid value for a pointer to member
function. Variable of such type can be successfully initialized by 0 but template arguments can not.
Is it desired behavior or a bug?


gcc version 4.6.1


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]