Допустим, у меня есть перечисление в пространстве имен с некоторыми вспомогательными функциями:
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
.