【发布时间】:2018-08-01 12:43:14
【问题描述】:
鉴于以下模板和专业化
enum CountryName
{
Armenia = 0 ,
Georgia,
Size = 2
};
template <CountryName variable>
class CountryInfo;
template <>
class CountryInfo<Armenia>
{
/* CODE HERE */
};
template <>
class CountryInfo<Georgia>
{
/* CODE HERE */
};
我想遍历枚举并为每个专业创建对象。
main() {
for(auto i=0; i<CountryName::Size; ++i) {
CountryInfo<(static_cast<CountryName>(i))>();
}
}
我收到以下错误: 错误:'i' 的值在常量表达式中不可用 CountryInfo();
【问题讨论】:
-
模板参数在编译时解析,而变量
i在运行时更改。 IE。您不能将变量i用作模板参数 -
:(哦,我明白了。可能我需要关闭这个问题。
-
@MikevanDyke 你能发帖作为答案吗?如果你愿意,我可以把它变成绿色。
-
@tyker 如何迭代编译时间?
标签: c++ templates template-specialization