Silverlan Silverlan - 1 year ago 90
C++ Question

Retrieve default value of in-class initialized member

Is there any way of directly retrieving the default value of a member, which has been defined using in-class initialization? For example:

struct Test
int someValue = 5;

int main(int argc,char *argv[])
auto val = declvalue(Test::someValue); // Something like this; Should return 5
return 0;

Basically something that 'copies' (Similar to decltype) the entire declaration, including the default value. Does something like that exist?

Answer Source

If your type is default constructible, you can write your own declvalue:

template<typename T, typename C>
constexpr T declvalue(T C::* ptr)
    return C{}.*ptr;

which would be used as follows:

int main() {
    cout << declvalue(&Test::someValue) << endl;

live demo

This particular case seems to optimize well, but I suggest wariness.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download