Conversation
Docs: adjust template to support Sphinx 9
- channel.hpp: packed_channel_reference and packed_dynamic_channel_reference lost their template parameter names in 5611bd5, where trailing `//` comments were turned into \tparam lines. The names sat to the left of those comments, so "Defines" and "true" ended up read as names. - algorithm.hpp: extend_row, extend_col and extend_boundary document extend_count and option with \tparam, but both are function arguments. - ellipse.hpp: midpoint_ellipse_rasterizer documents center and semi_axes; the constructor takes center_point and semi_axes_values. Those are the names of the members it assigns to. - threshold.hpp: threshold_binary documents threshold_direction, the argument is direction (threshold_direction is its type). - morphology.hpp: morph documents kernel, the argument is ker_mat. morph_impl above it really does take kernel and is left alone. Comments only.
[doc] Fix Doxygen parameter names that do not match the declarations
A follow-up to #792, same check on the parts of the library it did not reach. - read_and_convert_view.hpp: all four Device overloads document \param file, the argument is device. The descriptions already say "It's a device", so only the names were wrong. - read_and_convert_image.hpp: the Device overload at 241 documents file_name with the string overload's description. The other three Device overloads in the same file (47, 134, 189) get this right and were used as the model. - reader_base.hpp: init_image documents @PARAM info, the argument is settings. - extension/io/png/tags.hpp: the image_read_settings constructor documents \param gamma, the argument is screen_gamma. - extension/dynamic_image/algorithm.hpp: the two-argument copy_and_convert_pixels documents \tparam Type, the pack is Types. The three-argument overload twenty lines above spells it correctly. - extension/dynamic_image/any_image.hpp: const_view documents \tparam Types, the pack is Images. view() right above it is correct. read_view.hpp, read_image.hpp and the other Device overloads really do name the argument file, and their \param file is correct. Those are untouched. Comments only.
[doc] Fix Doxygen parameter names in io and the extensions
Both read_image_info overloads carry \param tag, but the FormatTag argument has no name in the declaration and Doxygen cannot attach a \param to one. Naming it would produce an unused parameter, and every other FormatTag argument across io/ is unnamed too, so the explanation moves into the description instead.
[doc] Document the format tag without a \param
Boost build reports "error: No best alternative for libs/gil/test/core/io/path_spec"
Fix io path_spec test Jamfile
step_iterator_adaptor (used by memory_based_step_iterator) defines its own scaled operator- as a member function. Boost.STLInterfaces' C++20 "concepts" code path (only active at cxxstd≥20) also auto-generates a fallback operator- as a free/hidden-friend template, unconditionally enabled whenever the raw underlying iterator supports subtraction: For memory_based_step_iterator<pixel*>, base() returns the raw pixel*, which is directly subtractable — so this fallback is always a candidate. Calling b - a requires converting a/b (type Derived) to invoke GIL's member operator (a derived-to-base conversion for the implicit object parameter), while the library's template fallback deduces D1=D2=Derived with zero conversions. An exact match beats a conversion, so GCC silently picks the library's fallback — returning the raw, unscaled pointer difference instead of the step-divided element count. That wrong (too-large) n then feeds directly into std::__copy_m's for (n = last-first; n>0; --n) loop, which walks the iterator far past the end of the buffer with no bounds re-check. It only shows up at cxxstd=20 because that's exactly the threshold where the library's "concepts" overload set activates.
Dropped the using parent_t::operator++/--; lines and added explicit local postfix operators
version `GLIBC_2.28' not found
Also fix the wide-string literal being misdecoded at compile time
refactor: replace Boost.Iterator with Boost.STLInterfaces
mloskot
approved these changes
Aug 28, 2026
mloskot
left a comment
Member
There was a problem hiding this comment.
Thanks for taking care of it.
Contributor
Author
|
sdebionne
marked this pull request as ready for review
September 1, 2026 14:05
Contributor
Author
|
Release notes in boostorg/website-v2-docs#696 We still have time to add more changes if necessary. |
mloskot
approved these changes
Sep 1, 2026
Closed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Merge to master for 1.93 (deadline Oct. 21)
Tasklist