This page is to log the progress of an initiative to reduce the number and impact of compiler warnings emitted from Boost code.
The priorities are:
- Boost headers: warnings emitted with a long template instantiation back trace are particularly troublesome.
- Boost source code: Users building Boost on their platform should ideally see a clean build with no warnings.
- Core libraries, that are reused by other Boost libraries.
The main test compilers and flags are:
- Microsoft Visual C++ (release version 2008 or later), with /W4.
- GNU GCC (release version 4.4.x or later) with /Wall /Wextra -pedantic.
Consider these warning levels as an aspiration, leaving them unfixed only with good reason. Only time will tell what the correct balance between warning-suppression and time-wasting is.
In addition if library test cases can be made warning free, then we can begin to enforce a no-warnings policy by testing with warnings-as-errors with the above compilers.
Library | Owner | Status MSVC | Status gcc | Notes |
Any | ? | clean | clean | One trivial msvc warning in one test. |
Array | ? | patch for MSVC | clean | MSVC Patch |
Bind | ? | Clean | Clean | Patches |
Call Traits | ? | See Utility | See Utility | See Utility |
Compressed Pair | ? | See Utility | See Utility | |
Config | johnmaddock | Clean | Clean | Only headers are clean, I haven't looked at the tests. |
Concept Check | ? | unknown | unkown | |
Conversion | johnmaddock | clean | clean | Except for one deliberate warning. |
Date Time | ? | Bug | ||
Enable If | ? | See Utility | See Utility | |
Exception | ? | clean | clean | See Patch |
Filesystem | ? | clean | clean | |
For Each | ? | clean | clean | See issue 3686 |
Format | ? | unknown | unknown | |
Function | ? | warnings | clean | Patch |
Function Types | ? | unknown | unknown | |
Fusion | ? | warnings | warnings | |
Graph | ? | unknown | unknown | |
Hash | danieljames | clean | clean | warnings in tests only, fixed in patch. |
Integer | ? | clean | clean | Tests clean as well as headers now. |
Iostreams | ? | unknown | warnings | |
Iterators | ? | unknown | unknown | |
Min Max | ? | unknown | unknown | |
MPL | ? | unknown | unknown | |
Multi-index Containers | joaquin | clean | clean | Tests warnings from Boost.Integer (gcc), Boost.Serialization and Boost.Test |
Operators | ? | unknown | unknown | |
Optional | ? | warnings | Both gcc and msvc, headers and tests | |
Parameter | ? | unknown | unknown | |
Pool | ? | unknown | unknown | |
Preprocessor | ? | unknown | unknown | |
Program Options | s_ochsenknecht | unknown | clean | |
Property Map | ? | unknown | unknown | |
Proto | eric_niebler | Warnings | Warnings | |
Regex | johnmaddock | Clean | clean | |
Serialization | ? | unknown | unknown | |
Smart Ptr | ? | unknown | unknown | |
Spirit | hkaiser(msvc) danieljames(gcc) | clean | unknown | MSVC warnings have been cleaned, gcc still needs investigation |
Static Assert | johnmaddock | clean | clean | |
Swap | ? | unknown | unknown | |
System | ? | unknown | unknown | |
Test | johnmaddock | Patches | A couple of tests still produce warnings: Jamfile issues? | |
Timer | ? | unknown | unknown | |
Thread | ? | Patch | ||
Tuple | ? | unknown | unknown | |
Typeof | ? | unknown | unknown | |
Type Traits | johnmaddock | Clean | clean | One test has (unfixable?) warnings with gcc. |
Unordered | danieljames | clean | clean | |
Utility | johnmaddock | clean | clean | result_of_test.cpp and verify_test.cpp assert_test.cpp and base_from_member_test.cpp still have warnings that are probably deliberate. |
Variant | ? | clean | clean | Warning still present in some tests from integer-conversion tests. |
Wave | hkaiser | unknown | unknown | investigating |
Please set the Status field above to one of:
- unknown - library hasn't been tested for warnings yet.
- warnings - we know that the library has warnings, but no one has done anything about it yet.
- bug - if a bug report has been filed on the trac (with link)
- patch - if a Trac patch has been filed (with link).
- clean - fixes are in Trunk.
- release - fixes are in release branch.
Note that warnings from dependencies are not considered issues against that library - they should be filed against the depedency instead.
Please set the owner field to the Trac user ID of the person currently investigating so that we don't duplicate effort.
Libraries can be tested by cd'ing into boost-root/libname/test and invoking:
bjam msvc warnings=all
or
bjam gcc warnings=all cxxflags=-Wextra