我试图使用另一个函数的返回值来调用模板化函数,但是我似乎无法使其正常工作。

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/

10-14 07:02