【发布时间】:2019-07-25 19:00:46
【问题描述】:
我这样定义了一个函数和一个类型枚举:
enum ActionType : int {
ACTION_FOO, ACTION_BAR, ACTION_BAZ
};
template<int T>
bool TestAction(std::string input, Result& result);
TestAction 返回成功指示符,并将输出写入 Result 参数。它专门用于所有 ActionType 值。我这样称呼它:
std::string input = "test";
Result res;
bool ok = TestAction<ACTION_FOO>(input, res) || TestAction<ACTION_BAR>(input, res) || TestAction<ACTION_BAZ>(input, res);
只要一个调用返回一个真值,就不需要调用其他函数,所以|| 运算符在这里工作得很好。
代码按预期工作,但我想避免手动(或使用宏)编写 OR 语句,而是使用模板生成类似的代码编译时间。有没有可能?
如果我从错误的方向解决问题,我可以接受,但是请给我一些提示,告诉我如何重做这段代码。
【问题讨论】:
-
你可以使用
tuple的函数指针,但对我来说似乎不值得。 -
函数指针元组完全没有必要
-
@J.AntonioPerez 我没有想到利用它总是调用同一个函数模板这一事实,因此您可以打包模板参数。