【发布时间】:2022-01-20 04:30:10
【问题描述】:
通过使用 c++ 14 或 c++11,我们是否有一种优雅的方法来完成以下任务?成员数量和操作类型由模板输入值'count'决定
template<int count>
class show{
public:
run(){
if (count == 1){
int x;
} else if(count ==2){
int x, y;
}else if(count ==3){
int x, y, z;
}
if (count == 1){
printf("res: %d \n", x);
} else if(count ==2){
printf("res: %d \n", x+y);
}else if(count ==3){
printf("res: %d \n", x+y+z);
}
}
};
更新:在这种情况下我们可以使用部分特化或与模板相关的东西吗?
【问题讨论】:
-
你的意思是if constexpr,即编译时 if 或 sth else?
-
部分特化对这种情况有用吗?我不熟悉这个...
-
如果您希望每个成员都是单独的变量,您是否考虑过en.cppreference.com/w/cpp/types/enable_if?如果 count 为
-
当然,为什么不 godbolt.org/z/6fdjj1j3c
if constexpr应该等同于这个(前提是您使用 C++17 或更高版本;如果您仅限于 C++14,则需要专业化),这是一个口味问题,一个人需要使用其中一个或另一个。你能提供更多关于你的问题的细节吗? -
如果都属于同一类型,为什么不使用大小为
count的vector并总结一下?
标签: c++ templates partial-specialization