when building tests with both, Boost.Build and CMake.
Disable concepts check for tests where range (e.g. std::array)
used as image pixel - not fully specialised as acceptable pixel type.
Ignore warnings from boost/concept_check.hpp
Rationalise uses of GCC and clang diagnostic push/pop,
with adding constraint for GCC 4.6+ as minimum version
where the pragma was introduced.
Closes#228
This ignores the warning in the test code only, not in GIL headers and
the old test has compared float-point numbers with == or != forever,
so this does not ignore anything new.
Remove unused #include-s and leave io/test/paths.hpp as sole
place of #include <boost/filesystem.hpp> for IO tests.
Silence annoying -Wconversion or -Wshorten-64-to-32 warning
from Boost.SmartPtr via Boost.Filesystem:
conversion to 'std::atomic<int>::__integral_type {aka int}'
from 'long int' may alter its value
Those are places boost::is_same can be replaced in non-intrusive way.
Remaining are types derived from boost::is_same, where the replacing
would affect all their uses - effectively switching from boost::true_/false_ types
to std::true_type and std::false_type.
Such change needs to come along with Boost.MPL to MP11 migration.
Fixes at least eight warnings issued by in the toolbox tests:
warning: variable (...) set but not used [-Wunused-but-set-variable]
Add new or improve existing BOOST_TEST checks.
Fixes at least two warnings issued by channel tests due to
comparison of unsigned channel value with signed integer 1:
../../boost/test/tools/assertion.hpp:72:13:
warning: comparison between signed and unsigned
integer expressions [-Wsign-compare]
Replace boost::disable_if with std::enable_if and negated condition.
Update mpl::and_ expressions to yield value convertible to bool, instead of type.
Format std::enable_if expressions and nearby code they are nested in.
Replace complex template-based leading return type of functions
with auto and trailing return type for greater readability.
Replace some Boost type traits with <type_traits> features.
Replace 0 with nullptr where modernize-use-nullptr missed (updates #180).
Notice, boost::lazy_enable_if in extension/toolbox has not been replaced,
but it seems it could have been - need verification with number of compilers.
The constexpr belongs to the declaration specifiers (like static) and
not just the type specifiers (like cv-qualifiers), so it binds to
the declaration (like static), not the type (like const).
Refines #211
Run clang-tidy 7.0 with -checks='-*,modernize-use-using' -fix
against TU-s of examples.
Manually refactor numerous typedef-s where missed by modernize-use-using
check, not uncommon in code snippets in comments.
Outcome is that searching for lower-case whole word typedef
in sources of all the tests should return only handful of matches
in boost/gil/extension/dynamic_image/apply_operation_base.hpp
Replaced BOOST_STATIC_ASSERT with C++11 binary static_assert,
with empty message.
In future, this should make it possible to automatically refactor
into C++17 unary static_assert using clang-tidy and
its modernize-unary-static-assert check.
Closes#106
The CMake configuration is only provided for convenience
of contributors. It does not export or install any targets,
deploy config files or support subproject workflow.
Configuration summary:
- Linux (GCC 5.4), Windows (VS2017), Mac OS (clang 4.0)
- Boost 1.68 built with variant=release
- Boost.GIL built and tested using CMake w/ CMAKE_BUILD_TYPE=Release
- Basic setup of GIL IO extension dependencies is in place,
using .deb packages or Conan.
- Build without GIL IO extension tests due to issues in CMake
configuration, not related to Azure Pipelines.
Closes#188
[skip appveyor]
[skip travis]
It is not easy to install pre-built libraw on Windows and Mac OSX:
- Conan does not seem to offer it
- Vcpkg does offer to be build it, but CI resources are too precious.
The linked variant of the Boost.UTF seems recommended.
It may help to avoid mysterious run-time error on Mac OS:
boost::runtime::access_to_missing_argument:
There is no argument provided for parameter color_output
It also may speed up compilation during CI builds.
Replace boost::bind with std::bind from C++11.
Move template parameter comments to Doxygen \tparam-s,
so they are captured as proper documentation.
Tidy up code formatting.
Replace Boost.MPL boolean constants with C++11 equivalents.
Replace `throw()` with `noexcept`.
Replace empty constructor body with `default`.
Rename private class members to avoid leading underscore
(too easy to confuse as reserved identifier).
Tidy up with compact formatting.