【发布时间】:2018-10-18 10:39:30
【问题描述】:
我想让函数调用依赖于参数,即调用的是什么版本的函数。我正在寻找一种方法来使以下代码工作,而不使 enum_value v 成为模板参数。目标是如果v==enum_value::A,则调用第一个实例。如果v==enum_value::B 必须调用第二个实例。
enum class enum_value { A, B, C };
auto foo(enum_value v) -> std::enable_if_t<v==enum_value::A>
{}
auto foo(enum_value v) -> std::enable_if_t<v==enum_value::B>
{}
如果我需要详细说明,请随时询问。
【问题讨论】:
-
我称之为 XY 问题——你的用例是什么?您不能直接这样做,因为重载解析和模板实例化是编译时过程,而您的值在运行时出现。但是对于您遇到的实际问题,可能有一个解决方案。
-
我正在为某个问题创建多个解决方案。我只是想知道这是否也是一种方式。感谢您的帮助!
标签: c++14 template-meta-programming sfinae overload-resolution