Sử dụng g ++ phiên bản 4.7.2, nếu tôi cố gắng biên soạn như sauTăng 1,53 địa phương thời gian ngày biên dịch lỗi với -std = C++ 0x
#include <boost/date_time/local_time/local_time.hpp>
class Bar
{
public:
Bar() { tz_db_.load_from_file("/home/date_time_zonespec.csv"); }
private:
boost::local_time::tz_database tz_db_;
};
int main()
{
return 0;
}
với -std = C++ 0x tôi nhận được như sau lỗi.
In file included from /usr/local/include/boost/date_time/local_time/local_time_types.hpp:18:0,
from /usr/local/include/boost/date_time/local_time/local_time.hpp:13,
from test.h:4,
from test.cpp:1: /usr/local/include/boost/date_time/local_time/custom_time_zone.hpp: In instantiation of ‘bool boost::local_time::custom_time_zone_base<CharT>::has_dst() const [with CharT = char]’: test.cpp:11:1: required from here /usr/local/include/boost/date_time/local_time/custom_time_zone.hpp:67:30: error: cannot convert ‘const boost::shared_ptr<boost::date_time::dst_day_calc_rule<boost::gregorian::date>
>’ to ‘bool’ in return
Nếu tôi thoát khỏi tùy chọn C++ 0x, mọi thứ đều ổn. Ai có thể cho tôi biết điều gì đang xảy ra ở đây?
Cảm ơn bạn vì điều đó. – Craig
Trong [ghi chú phát hành 1,53] (http://www.boost.org/users/history/version_1_53_0.html): 'Con trỏ thông minh giờ đây sử dụng toán tử toán tử rõ ràng trên trình biên dịch C++ 11. Điều này có thể phá vỡ mã mà chuyển một con trỏ thông minh đến một hàm lấy một bool hoặc trả về một con trỏ thông minh từ một hàm có kiểu trả về bool. Vui lòng sử dụng p! = 0 hoặc !! p trong các trường hợp như vậy. ' –
Vì vậy, thay đổi đối với con trỏ thông minh có thời gian ngày bị lỗi? – Craig