函数指向具有可变参数列表的函数

Hok*_*ama 6 c++ pointers stl function-pointers

我们可以有一个函数指针指向一个使用变量参数列表的函数吗?例如,假设我需要根据某些输入T'输入'在多个函数中选择一个函数.我可以使用像这样的STL地图吗?

template<typename T>
map<T, T (*)(T, ...)> func_map;
Run Code Online (Sandbox Code Playgroud)

如果这是可能的,你可以告诉我这样做是正确的设计观点.


[编辑]其实我有一套算法函数,我有一个消息字段.我需要根据此消息上的几个字节值选择此算法函数.我正在考虑使用hash_map,其键值是指向该算法函数的指针.我希望按照性能非常快,实现这一点的方法是什么.

另外,我没有为此选择简单的if-else或switch块的原因是因为告诉我们需要执行的函数的值可以在稍后的某个时候引用其他函数.

Dar*_*con 3

是的,可以这样做,但您可能不应该这样做。可变参数函数存在许多问题,包括:

  • 传递的所有类型必须是 POD 类型,否则行为未定义
  • 没有任何类型安全。如果传递错误的类型,将会导致未定义的行为。

我建议您寻找另一种方法。如果您详细说明为什么需要这样做,也许有人可以给您更好的选择。