id summary reporter owner description type status milestone component version severity resolution keywords cc 10439 Flyweight: now the constructor is explicit akim Demaille Joaquín M López Muñoz "Hi, The following piece of code used to work fine, but with 1.56, it now fails to compile with the two major free compilers. Thanks! {{{ $ cat /tmp/foo.cc #include #include int main() { boost::flyweight f = {}; } $ clang++-mp-3.5 -std=c++11 -I /opt/local/include foo.cc foo.cc:6:33: error: chosen constructor is explicit in copy-initialization boost::flyweight f = {}; ^ ~~ /opt/local/include/boost/flyweight/flyweight.hpp:195:14: note: constructor declared here explicit flyweight, ^ /opt/local/include/boost/flyweight/detail/perfect_fwd.hpp:79:27: note: expanded from macro 'BOOST_FLYWEIGHT_PERFECT_FWD' templatename(Args&&... args) \ ^ 1 error generated. $ g++-mp-4.9 -std=c++11 -I /opt/local/include foo.cc foo.cc: In function 'int main()': foo.cc:6:38: error: converting to 'boost::flyweights::flyweight >' from initializer list would use explicit constructor 'boost::flyweights::flyweight::flyweight(Args&& ...) [with Args = {}; T = std::basic_string; Arg1 = boost::parameter::void_; Arg2 = boost::parameter::void_; Arg3 = boost::parameter::void_; Arg4 = boost::parameter::void_; Arg5 = boost::parameter::void_]' boost::flyweight f = {}; ^ }}}" Bugs closed To Be Determined flyweight Boost 1.56.0 Problem fixed