Templates c++;如何在以整数为模板的函数上进行编译时分支(以及如何限制有效值的数量)?
如果我有一个使用int模板化的模板化函数,我如何对这个整数的值进行编译时分支?例如(我知道这不是一个很好的模板使用-这只是一个简单的例子来说明我的意思):Templates c++;如何在以整数为模板的函数上进行编译时分支(以及如何限制有效值的数量)?,templates,Templates,如果我有一个使用int模板化的模板化函数,我如何对这个整数的值进行编译时分支?例如(我知道这不是一个很好的模板使用-这只是一个简单的例子来说明我的意思): 模板 std::string get_name(){ //如果维度==1,则返回“行”; //如果维度=2,则返回“面积”; //否则,如果维度==3,则返回“体积”; //否则返回std::std::to_字符串(维度)+“D构造”; } 我如何实现这个分支 第二个问题:如何将维度的有效值限制为1-100?您可以对分支使用模板专门化: t
模板
std::string get_name(){
//如果维度==1,则返回“行”;
//如果维度=2,则返回“面积”;
//否则,如果维度==3,则返回“体积”;
//否则返回std::std::to_字符串(维度)+“D构造”;
}
我如何实现这个分支
第二个问题:如何将维度的有效值限制为1-100?您可以对分支使用模板专门化:
template<int Dimension>
std::string get_name() {
return std::to_string(Dimension) + "D construct";
}
template<>
std::string get_name<1>() {
return "line";
}
模板
std::string get_name(){
返回std::to_字符串(维度)+“D构造”;
}
模板
std::string get_name(){
返回“行”;
}
和SFINAE,以限制尺寸:
template<int Dimension>
std::enable_if_t<Dimension <= 100 , std::string> get_name() {
return std::to_string(Dimension) + "D construct";
}
template<>
std::string get_name<1>() {
return "line";
}
模板
std::enable_if_t您可以对分支使用模板专门化:
template<int Dimension>
std::string get_name() {
return std::to_string(Dimension) + "D construct";
}
template<>
std::string get_name<1>() {
return "line";
}
模板
std::string get_name(){
返回std::to_字符串(维度)+“D构造”;
}
模板
std::string get_name(){
返回“行”;
}
和SFINAE,以限制尺寸:
template<int Dimension>
std::enable_if_t<Dimension <= 100 , std::string> get_name() {
return std::to_string(Dimension) + "D construct";
}
template<>
std::string get_name<1>() {
return "line";
}
模板
std::如果启用,请使用一个真实的示例。存在std::string
时的编译时分支看起来毫无意义。你需要它做什么std::string
作为常量表达式或多或少不可用。但在实践中,它将内联到一些简短的东西,哦,请使用一个真实的例子。存在std::string
时的编译时分支看起来毫无意义。你需要它做什么std::string
作为常量表达式或多或少不可用。但在实践中,它将内联到一些简短的东西,哦,还有