Re: [Boost-bugs] [Boost C++ Libraries] #11152: Passing literals to oarchive

Subject: Re: [Boost-bugs] [Boost C++ Libraries] #11152: Passing literals to oarchive
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2015-03-30 15:40:22

#11152: Passing literals to oarchive
  Reporter: breese@… | Owner: ramey
      Type: Feature Requests | Status: new
 Milestone: To Be Determined | Component: serialization
   Version: Boost 1.57.0 | Severity: Optimization
Resolution: | Keywords:

Comment (by ramey):

 Currently we cannot pass literals directly to an oarchive like this:
    oarchive << 42;
 since compilation fails in interface_oarchive.hpp, as the operator<<
 only takes parameters by reference.
 We can remedy this by changing operator<< to take the parameter
 by const-ref instead, as show below. Is there any reason not to do
 --- a/include/boost/archive/detail/interface_oarchive.hpp
 +++ b/include/boost/archive/detail/interface_oarchive.hpp
 @@ -59,7 +59,7 @@ public:
       template<class T>
 - Archive & operator<<(T & t){
 + Archive & operator<<(const T & t){
           this->This()->save_override(t, 0);
           return * this->This();
 Since I wrote this, I've been considering it. I looked at your patch.
 I would likely condition it on the type being a tracked or untracked
 type rather than being on a primitive type.

Ticket URL: <>
Boost C++ Libraries <>
Boost provides free peer-reviewed portable C++ source libraries.

This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:18 UTC