Removed object copy in implicit conversion class.

Removed redundant function prototype declaration.
Adjusted tab position.
This commit is contained in:
Takatoshi Kondo 2013-09-04 14:04:49 +09:00
parent 8a08548f36
commit 7593e5ce0e

View File

@ -124,38 +124,6 @@ private:
with_zone(); with_zone();
}; };
bool operator==(const object& x, const object& y);
bool operator!=(const object& x, const object& y);
template <typename T>
bool operator==(const object& x, const T& y);
template <typename T>
bool operator==(const T& y, const object& x);
template <typename T>
bool operator!=(const object& x, const T& y);
template <typename T>
bool operator!=(const T& y, const object& x);
std::ostream& operator<< (std::ostream& s, const object& o);
// serialize operator
template <typename Stream, typename T>
packer<Stream>& operator<< (packer<Stream>& o, const T& v);
// convert operator
template <typename T>
T& operator>> (object const& o, T& v);
// deconvert operator
template <typename T>
void operator<< (object::with_zone& o, const T& v);
struct object::implicit_type { struct object::implicit_type {
implicit_type(object const& o) : obj(o) { } implicit_type(object const& o) : obj(o) { }
~implicit_type() { } ~implicit_type() { }
@ -164,7 +132,7 @@ struct object::implicit_type {
operator T() { return obj.as<T>(); } operator T() { return obj.as<T>(); }
private: private:
object obj; object const& obj;
}; };
@ -205,6 +173,7 @@ inline object& operator>> (object const& o, object& v)
return v; return v;
} }
// convert operator
template <typename T> template <typename T>
inline T& operator>> (object const& o, T& v) inline T& operator>> (object const& o, T& v)
{ {
@ -222,12 +191,14 @@ struct packer_serializer {
}; };
} }
// serialize operator
template <typename Stream, typename T> template <typename Stream, typename T>
inline packer<Stream>& operator<< (packer<Stream>& o, const T& v) inline packer<Stream>& operator<< (packer<Stream>& o, const T& v)
{ {
return detail::packer_serializer<Stream, T>::pack(o, v); return detail::packer_serializer<Stream, T>::pack(o, v);
} }
// deconvert operator
template <typename T> template <typename T>
void operator<< (object::with_zone& o, const T& v) void operator<< (object::with_zone& o, const T& v)
{ {