C++ 检索类内初始化成员的默认值
是否有任何方法可以直接检索使用类内初始化定义的成员的默认值?例如:C++ 检索类内初始化成员的默认值,c++,c++11,in-class-initialization,C++,C++11,In Class Initialization,是否有任何方法可以直接检索使用类内初始化定义的成员的默认值?例如: 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(;;);
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;
}
struct测试
{
int-someValue=5;
};
int main(int argc,char*argv[])
{
auto val=declvalue(Test::someValue);//类似这样的内容;应返回5
std::cout如果您的类型是默认可构造的,那么您可以编写自己的declvalue
:
template<typename T, typename C>
constexpr T declvalue(T C::* ptr)
{
return C{}.*ptr;
}
模板
constexpr T declvalue(tc::*ptr)
{
返回C{}.*ptr;
}
其用途如下:
int main() {
cout << declvalue(&Test::someValue) << endl;
}
intmain(){
coutauto val=Test{}.someValue;