2015-08-24 5 views
6

निम्नलिखित कोड बढ़ावा 1.57 के साथ की उम्मीद के रूप में काम करता है:समस्याएं, संस्करण 1.59

#include <iostream> 
#include <boost/log/trivial.hpp> 

struct Foo 
{ 
    int d=1; 
}; 

std::ostream& operator<<(std::ostream& out, const Foo& foo) 
{ 
    out << "Foo: " << foo.d; 
    return out; 
} 

int main() 
{ 
    BOOST_LOG_TRIVIAL(info) << Foo(); 
    return EXIT_SUCCESS; 
} 
बढ़ावा 1.59 एक ही कोड में विफल रहता है के साथ

। पहले जीसीसी त्रुटि संदेश है:

error: no match for ‘operator<<’ (operand types are ‘boost::log::v2s_mt_posix::basic_record_ostream’ and ‘Foo’)

न तो प्रलेखन और न ही रिलीज नोट्स दस्तावेज़ क्या बदला जाना चाहिए।

+0

लाइव संस्करण: http://melpon.org/wandbox/permlink/Xn1hDoe7Zg7cynRX ऐसा लगता है कि 'enable_if_formatting_ostream' टूटा हुआ है। – ForEveR

उत्तर

4

Live version ऐसा लगता है कि समस्या enable_if_formatting_ostream संरचना में है। इसे this commit में जोड़ा गया था। और

template< typename StreamT, typename R > 
struct enable_if_formatting_ostream {}; 
template< typename CharT, typename TraitsT, typename AllocatorT, typename R > 
struct enable_if_formatting_ostream< basic_formatting_ostream< CharT, TraitsT, AllocatorT >, R > { typedef R type; }; 

की तरह, नहीं लग रहा है और अब operator <<

template< typename StreamT, typename T > 
inline typename boost::log::aux::enable_if_formatting_ostream< StreamT, StreamT& >::type 
operator<< (StreamT& strm, T const& value) 

है इससे पहले कि यह

template< typename CharT, typename TraitsT, typename AllocatorT, typename T > 
inline basic_formatting_ostream< CharT, TraitsT, AllocatorT >& 
operator<< (basic_formatting_ostream< CharT, TraitsT, AllocatorT >& strm, T const& value) 

और record_ostream के बाद से formatting_ostream संकलक से ली गई है अधिभार पा सकते हैं था, लेकिन अब के बाद से SFINAE है प्रयुक्त और संरचना में type टाइपिफ़ केवल तभी होगा जब formatting_ostream का उपयोग किया जाए। और this इस मामले के लिए कामकाज हो सकता है।

+3

बूस्ट ट्रैक को देखने के बाद, यह बग रिकॉर्ड और तय किया गया है: https://svn.boost.org/trac/boost/ticket/11549 –

+1

रीग्रेशन परीक्षण के माध्यम से यह पृथ्वी पर कैसे पहुंचा? –

संबंधित मुद्दे