【发布时间】:2014-05-18 12:02:42
【问题描述】:
是否可以参数化非类型模板参数?我正在尝试生成一个 thunk,它将其参数转发到基于一些运行时检查的两个编译时间常量函数之一,以希望得到一些符合以下内容的内容:
#include <stdlib.h>
int a(int, int, char) {
return 0;
}
int b(int, int, char) {
return 0;
}
// This doesn't work
template<typename ReturnType, typename... Params>
template<ReturnType (*first)(Params...), ReturnType (*second)(Params...)>
ReturnType coin_flip(Params... params) {
if (rand() % 2) {
return first(params...);
} else {
return second(params...);
}
}
int main() {
return coin_flip<a, b>(1, 2, '3');
}
【问题讨论】:
-
是的,但不推断所述参数。有针对 C++1y/1z 的提议。我不记得他们是否进入了 1 年。
标签: c++ templates c++11 variadic-templates auto-generate