J
Johannes Bauer
Hello group,
I've written a serialization class which serializes arbitrary objects to
by "Block" representation. A template exists for POD objects, as do some
specializations, like:
template<> class Serializer<std::string> {
public:
static void Serialize(const std::string &Input, Block &Output) {
Serializer<unsigned int>::Serialize(Input.size(), Output);
Output.Increment(Input.size());
std::copy(Input.begin(), Input.end(), Output.endptr() - Input.size());
}
[...]
Those all work fine. Now I wanted to introduce a template that could
reduce a map which contains arbitrary types:
template<typename T1, typename T2> class Serializer< std::map<T1, T2> > {
public:
static void Serialize(const std::map<T1, T2> &Input, Block &Output) {
Serializer<unsigned int>::Serialize(Input.size(), Output);
std::map<T1, T2>::const_iterator i;
for (i = Input.begin(); i != Input.end(); i++) {
Serializer<T1>::Serialize(i->first, Output);
Serializer<T2>::Serialize(i->second, Output);
}
}
The compiler however now complains with a *very* weird error:
Common/Serializer.hpp: In static member function ‘static void
Serializer<std::map<T1, T2, std::less<_Key>,
std::allocator<std:
air<const _Key, _Tp> > > >::Serialize(const
std::map<T1, T2, std::less<_Key>, std::allocator<std:
air<const _Key,
_Tp> > >&, Block&)’:
Common/Serializer.hpp:61: error: expected `;' before ‘i’
Common/Serializer.hpp:62: error: ‘i’ was not declared in this scope
What am I doing wrong?
Kind regards,
Johannes
I've written a serialization class which serializes arbitrary objects to
by "Block" representation. A template exists for POD objects, as do some
specializations, like:
template<> class Serializer<std::string> {
public:
static void Serialize(const std::string &Input, Block &Output) {
Serializer<unsigned int>::Serialize(Input.size(), Output);
Output.Increment(Input.size());
std::copy(Input.begin(), Input.end(), Output.endptr() - Input.size());
}
[...]
Those all work fine. Now I wanted to introduce a template that could
reduce a map which contains arbitrary types:
template<typename T1, typename T2> class Serializer< std::map<T1, T2> > {
public:
static void Serialize(const std::map<T1, T2> &Input, Block &Output) {
Serializer<unsigned int>::Serialize(Input.size(), Output);
std::map<T1, T2>::const_iterator i;
for (i = Input.begin(); i != Input.end(); i++) {
Serializer<T1>::Serialize(i->first, Output);
Serializer<T2>::Serialize(i->second, Output);
}
}
The compiler however now complains with a *very* weird error:
Common/Serializer.hpp: In static member function ‘static void
Serializer<std::map<T1, T2, std::less<_Key>,
std::allocator<std:
std::map<T1, T2, std::less<_Key>, std::allocator<std:
_Tp> > >&, Block&)’:
Common/Serializer.hpp:61: error: expected `;' before ‘i’
Common/Serializer.hpp:62: error: ‘i’ was not declared in this scope
What am I doing wrong?
Kind regards,
Johannes