Thank you for your hints the solution was adding typename
before one<_Return>::UseType (*)(void);
so that it looks like:
using PF = typename one<_Return>::UseType (*)(void);
Here is a link with more info type_alias
Additionally, class one
has to be defined as @RemyLebeau suggested:
template <class _Type>
class one {
public:
using UseType = _Type;
};
by some reason _Type, and _Return was not a problem. Maybe because in the case of templates they are reduced to local scope, it's just a guess.