我有
template <int i> struct a { static void f (); };
Run Code Online (Sandbox Code Playgroud)
在代码中的不同位置完成专业化.如何仅在运行时调用正确a<i>::f的知识i?
void f (int i) { a<i>::f (); } // won't compile
Run Code Online (Sandbox Code Playgroud)
我不想列出i一个大的所有可能的值switch.
编辑:
我想到了类似的东西
#include <iostream>
template <int i> struct a { static void f (); };
struct regf {
typedef void (*F)();
enum { arrsize = 10 };
static F v[arrsize];
template < int i > static int apply (F f) {
static_assert (i < arrsize, "");
v[i] …Run Code Online (Sandbox Code Playgroud)