Move template implementation to header file

This commit is contained in:
Håkon Hægland
2023-08-29 10:28:42 +02:00
parent bec10dbfbe
commit 7d1f1b103e
2 changed files with 5 additions and 24 deletions

View File

@@ -117,7 +117,11 @@ public:
bool has_group(const std::string& gname) const;
bool operator==(const GroupEconProductionLimits& other) const;
bool operator!=(const GroupEconProductionLimits& other) const;
template<class Serializer> void serializeOp(Serializer& serializer) const;
template<class Serializer>
void serializeOp(Serializer& serializer) const
{
serializer(m_groups);
}
static GroupEconProductionLimits serializationTestObject();
size_t size() const;

View File

@@ -96,29 +96,6 @@ bool GroupEconProductionLimits::operator!=(const GroupEconProductionLimits& othe
}
template<class Serializer>
void GroupEconProductionLimits::serializeOp(Serializer& serializer) const
{
serializer(m_groups);
}
// TODO: The template function serializeOp() needs to be specialized here or else
// the linker will not be able to link test_Serialization. The error I got was
//
// CMakeFiles/test_Serialization.dir/tests/test_Serialization.cpp.o:
// in function `void Opm::Serializer<Opm::Serialization::MemPacker>
// ::operator()<Opm::GroupEconProductionLimits>(Opm::GroupEconProductionLimits const&)':
// /home/hakon/test/opm/opm-common/opm/common/utility/Serializer.hpp:113:
// undefined reference to `void Opm::GroupEconProductionLimits::serializeOp<
// Opm::Serializer<Opm::Serialization::MemPacker> >(Opm::Serializer<Opm::Serialization::MemPacker>&)'
// collect2: error: ld returned 1 exit status
//
template<> void GroupEconProductionLimits::serializeOp(
Opm::Serializer<Opm::Serialization::MemPacker>& serializer) const
{
serializer(m_groups);
}
GroupEconProductionLimits GroupEconProductionLimits::serializationTestObject()
{