获取模板中变量的类型
Getting the type of a variable in a template
这最初是通过尝试从unique_ptr中提取类型而产生的,结果证明这很容易。然而,我现在对一般情况感兴趣。
以下是我想要的:
template<class CHILDOBJ>
void MyChildFunc()
{
// do stuff with the CHILDOBJ type
};
template<class OBJTYPE>
void MyFunc(OBJTYPE obj)
{
MyChildFunc<TYPE of OBJTYPE::child????>();
};
struct MyIntStruct
{
int child;
};
struct MyDoubleStruct
{
double child;
};
void main(void)
{
MyIntStruct int_struct;
MyDoubleStruct double_struct;
MyFunc(int_struct);
MyFunc(double_struct);
}
因此,我想要一种使用传递给MyFunc的对象中的属性类型来调用MyChildFunc的方法。我知道我可以创建另一个模板函数,并将obj.child传递给它以允许推导,但我希望有一种方法可以手动推导类型,并直接在模板参数中使用它。
正如我所说,这现在更像是学术性的,而不是真实的,这就是为什么代码如此做作,但我很想知道是否有办法做到这一点。
这是怎么回事:
template<class CHILDOBJ>
void MyChildFunc()
{
// do stuff with the CHILDOBJ type
};
template<class OBJTYPE>
void MyFunc(OBJTYPE obj)
{
MyChildFunc<decltype(OBJTYPE::child) >();
};
struct MyIntStruct
{
int child;
};
struct MyDoubleStruct
{
double child;
};
int main(int argc, const char * argv[])
{
MyIntStruct int_struct;
MyDoubleStruct double_struct;
MyFunc(int_struct);
MyFunc(double_struct);
return 0;
}
我用Xcode 6编译了这篇文章,它似乎可以按预期工作。
相关文章:
- 从模板创建通用打印函数,以打印基元数据类型变量的值
- 指针数据类型变量如何包含对象?
- 将 static_cast<int>(-15) 分配给静态常量字符类型变量
- 将内置类型变量传递给只有一个类类型参数的"+"运算符函数时自动类型转换的构造函数
- 如何为结构类型变量赋值
- 如何将字符类型变量附加到字符串中?
- 共享或私有 openmp 代码中的结构化类型变量
- 有没有办法在 c++ 中制作类型变量?
- 从其他类声明类类型变量会给出 C2143 错误(在"*"之前缺少";")
- 如何检查类中定义的枚举类型变量是否被分配给?
- 将子类实例保存在父类型变量中并通过父变量使用 Child 函数?
- 是否可以在没有结构的情况下创建新的类型变量?
- 为什么类型变量;不调用默认 CTR
- 如何使用CIN将输入整数值获取到char类型变量中
- 如何为 char** 类型变量提供适当的值,以便将其分配给字符串变量
- 在C++标准中哪里说必须初始化 const 内置类型变量的定义
- 为什么可以将其他类型变量用作C 中常量参考参数参数的参数
- Eclipse CDT 打开声明的自动类型变量
- 如何计算长长类型变量中的位数
- 将自动类型变量初始化为零.这种类型安全吗?