vendredi 22 mai 2015

How to test if a method is const?

How can I get a boolean value indicating if a known method has the const qualifier or not?

For example:

struct A {
    void method() const {}
};

struct B {
    void method() {}
};

bool testA = method_is_const<A::method>::value; // Should be true
bool testB = method_is_const<B::method>::value; // Should be false

In the type_traits header I found an is_const test I could use, but I need the method type, and I'm unsure how to obtain that.

I tried: std::is_const<decltype(&A::method)>::value but it doesn't work, and I can understand why (void (*ptr)() const) != const void (*ptr)()).

Aucun commentaire:

Enregistrer un commentaire