次のコードは警告を発行します。
boost::gil::rgb8_image_t img(10, 10);
boost::gil::png_write_view("TenByTen.png", view(img));
VS 2010 で 64 ビットでコンパイルした場合。それは言います:
\boost\gil\extension\io\png_io_private.hpp(341): warning C4244: 'argument' : conversion from '__int64' to 'png_uint_32', possible loss of data
\boost\gil\extension\io\png_io.hpp(202) : see reference to function template instantiation 'void boost::gil::detail::png_writer::apply<View>(const View &)' being compiled
with
[
View=boost::gil::image_view<boost::gil::rgb8_loc_t>
]
main.cpp(20) : see reference to function template instantiation 'void boost::gil::png_write_view<boost::gil::image_view<Loc>>(const char *,const View &)' being compiled
with
[
Loc=boost::gil::rgb8_loc_t,
View=boost::gil::image_view<boost::gil::rgb8_loc_t>
]
apply() で png_set_IHDR() を呼び出すと png_uint_32 が返されることは明らかですが、view.width() は符号付き __int64 (おそらく ptrdiff_t) のようです。
私がそれについて何ができるか知っている人はいますか?boost:gil は 64 ビットで動作することを意図していると思います。
ブースト 1_50 を使用します。