c++如何对使用整数模板化的函数进行编译时分支(以及如何限制有效值的数量)



如果我有一个使用int模板化的模板化函数,我如何对这个整数的值进行编译时分支?例如:

template<int Dimension>
std::string get_name() {
// if Dimension == 1 return "line";
// else if Dimension == 2 return "area";
// else if Dimension == 3 return "volume";
// else return std::std::to_string(Dimension) + "D construct";
}

如何实现此分支?

第二个问题:如何将Dimension的有效值限制为1-100?

您可以为分支使用模板专用化:

template<int Dimension>
std::string get_name() {
return std::to_string(Dimension) + "D construct";
}
template<>
std::string get_name<1>() {
return "line";
}

和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";
}

最新更新