【发布时间】:2018-05-03 10:46:06
【问题描述】:
假设我在命名空间中有一个带有一些辅助函数的枚举:
namespace MyEnumNamespace
{
enum MyEnum
{
Foo,
Bar
};
MyEnum FromString(std::string);
}
我有一个反序列化函数,我想专门针对所有使用 SFINAE 的枚举(假设它们都定义了 FromString 函数)。
template <typename T>
std::enable_if_t<std::is_enum_v<T>, T> Deserialize(const MyVariant& variant)
{
return FromString(variant.AsString());
}
在不知道命名空间名称的情况下如何调用FromString?我只知道T 与FromString 在同一个命名空间中。
【问题讨论】:
-
您是否可以控制
FromString()s 的定义方式?如果是这样,您可以改为将它们设为void FromString(std::string, MyEnum &),并使用依赖于参数的查找来调用它们。 -
这可能与Argument Dependent Lookup相关/被@