gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:27:15 26 4
gpt4 key购买 nike

是否有任何方法可以直接检索使用类内初始化定义的成员的默认值?例如:

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;
}

live demo

这个特殊情况似乎 optimize well ,但我建议保持警惕。

关于c++ - 检索类内初始化成员的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40290141/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com