我试图使用另一个函数的返回值来调用模板化函数,但是我似乎无法使其正常工作。
enum class MYENUM {
X1,X2
};
MYENUM SomeFunc() {
return MYENUM::X1;
}
template<MYENUM T>
void ENUMFunc() {
//do something
}
int main() {
ENUMFunc<MYENUM::X1>(); //works
ENUMFunc<SomeFunc()>(); //error?
}
最佳答案
您只能将constant expression用作non-type template parameter的值。为此,您需要将SomeFunc
标记为constexpr
,例如
constexpr MYENUM SomeFunc() {
return MYENUM::X1;
}
现在,您可以将其用作模板参数,如live example所示关于c++ - 对另一个模板函数C++使用函数返回,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63488793/