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.

LibraryOwnerStatus MSVCStatus gccNotes
Any?cleancleanOne trivial msvc warning in one test.
Array?patch for MSVCclean MSVC Patch
Bind? CleanClean Patches
Call Traits?See UtilitySee UtilitySee Utility
Compressed Pair?See UtilitySee Utility
ConfigjohnmaddockCleanCleanOnly headers are clean, I haven't looked at the tests.
Concept Check?unknownunkown
ConversionjohnmaddockcleancleanExcept for one deliberate warning.
Date Time? Bug
Enable If?See UtilitySee Utility
Exception?cleanclean See Patch
Filesystem?cleanclean
For Each?cleanclean See issue 3686
Format?unknownunknown
Function?warningsclean Patch
Function Types?unknownunknown
Fusion?warningswarnings
Graph?unknownunknown
Hashdanieljamescleancleanwarnings in tests only, fixed in  patch.
Integer?cleancleanTests clean as well as headers now.
Iostreams?unknownwarnings
Iterators?unknownunknown
Min Max?unknownunknown
MPL?unknownunknown
Multi-index ContainersjoaquincleancleanTests warnings from Boost.Integer (gcc), Boost.Serialization and Boost.Test
Operators?unknownunknown
Optional?warningsBoth gcc and msvc, headers and tests
Parameter?unknownunknown
Pool? unknownunknown
Preprocessor?unknownunknown
Program Optionss_ochsenknechtunknownclean
Property Map?unknownunknown
Protoeric_nieblerWarningsWarnings
RegexjohnmaddockCleanclean
Serialization?unknownunknown
Smart Ptr?unknownunknown
Spirithkaiser(msvc) danieljames(gcc)cleanunknownMSVC warnings have been cleaned, gcc still needs investigation
Static Assertjohnmaddockcleanclean
Swap?unknownunknown
System?unknownunknown
Testjohnmaddock PatchesA couple of tests still produce warnings: Jamfile issues?
Timer?unknownunknown
Thread? Patch
Tuple?unknownunknown
Typeof?unknownunknown
Type TraitsjohnmaddockCleancleanOne test has (unfixable?) warnings with gcc.
Unordereddanieljamescleanclean
Utilityjohnmaddockcleancleanresult_of_test.cpp and verify_test.cpp assert_test.cpp and base_from_member_test.cpp still have warnings that are probably deliberate.
Variant?cleancleanWarning still present in some tests from integer-conversion tests.
Wavehkaiserunknownunknowninvestigating

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