繁体   English   中英

检索类内初始化成员的默认值

[英]Retrieve default value of in-class initialized member

有没有办法直接检索成员的默认值,该默认值是使用类内初始化定义的? 例如:

struct Test
{
    int someValue = 5;
};

int main(int argc,char *argv[])
{
    auto val = declvalue(Test::someValue); // Something like this; Should return 5
    std::cout<<val<<std::endl;
    for(;;);
    return 0;
}

基本上是'复制'(类似于decltype )整个声明的东西,包括默认值。 这样的事情存在吗?

如果您的类型是默认可构造的,您可以编写自己的declvalue

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

将使用如下:

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

现场演示

这个特殊情况似乎很好 ,但我建议谨慎。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM