mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-05-09 03:57:51 +03:00
Applies some review comments.
Proper visit for ESM::CellVariant Fixed MWWorldCell constructor
This commit is contained in:
parent
4e7cde5d72
commit
1caed2de2a
13 changed files with 71 additions and 102 deletions
|
@ -38,21 +38,8 @@ namespace ESM
|
|||
const ESM4::Cell& getEsm4() const;
|
||||
const ESM::Cell& getEsm3() const;
|
||||
|
||||
template <class F>
|
||||
auto visit(F&& f) const
|
||||
{
|
||||
return std::visit(f, mVariant);
|
||||
}
|
||||
template <class F>
|
||||
auto visit(F&& f)
|
||||
{
|
||||
return std::visit(f, mVariant);
|
||||
}
|
||||
template <class F>
|
||||
auto visit(F&& f, const CellVariant& v2) const
|
||||
{
|
||||
return std::visit(f, mVariant, v2.mVariant);
|
||||
}
|
||||
template <class F, class... T>
|
||||
friend auto visit(F&& f, T&&... v);
|
||||
};
|
||||
|
||||
struct ReferenceVariant
|
||||
|
@ -77,24 +64,11 @@ namespace ESM
|
|||
ESM::CellRef& getEsm3() { return std::get<ESM::CellRef>(mVariant); }
|
||||
ESM4::Reference& getEsm4() { return std::get<ESM4::Reference>(mVariant); }
|
||||
};
|
||||
}
|
||||
|
||||
namespace std
|
||||
{
|
||||
template <class F>
|
||||
auto visit(F&& f, const ESM::CellVariant& v)
|
||||
template <class F, class... T>
|
||||
auto visit(F&& f, T&&... v)
|
||||
{
|
||||
return v.visit(f);
|
||||
}
|
||||
template <class F>
|
||||
auto visit(F&& f, ESM::CellVariant& v)
|
||||
{
|
||||
return v.visit(f);
|
||||
}
|
||||
template <class F>
|
||||
auto visit(F&& f, const ESM::CellVariant& v1, const ESM::CellVariant& v2)
|
||||
{
|
||||
return v1.visit(f, v2);
|
||||
return std::visit([&](auto*... ptr) { return std::forward<F>(f)(*ptr...); }, std::forward<T>(v).mVariant...);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue