在运行时查找模板参数

时间:2012-09-06 19:13:23

标签: c++ templates

可以访问模板“type”,例如在std

std::vector<int>::size_type

对于作为模板参数传递的对象,是否可以使用相同的东西? 例如:

template<int i>
class A {
//?
};

A<3> instance;
int number = instance::???? //<--- assigns 3 to number

是否有可能在运行时再次传入对象类型中的3?不在A类中创建特定成员(这会增加对象的大小)

感谢

2 个答案:

答案 0 :(得分:5)

变量的类型在编译时是编译器已知的,只需要让它放弃即可。

template<int i>
int get(const A<i> & instance)
{
    return i;
}

答案 1 :(得分:2)

template<int i>
class A { 
public:
  enum { number = i };
};

int main() {
  A<3> instance;
  std::cout << instance.number;
  return 0;
}