Opened 8 years ago
#11066 new Bugs
smart_ptr/detail/sp_convertible.hpp should include <cstddef>
| Reported by: | Owned by: | Peter Dimov | |
|---|---|---|---|
| Milestone: | To Be Determined | Component: | smart_ptr | 
| Version: | Boost 1.57.0 | Severity: | Problem | 
| Keywords: | Cc: | 
Description
smart_ptr/detail/sp_convertible.hpp uses std::size_t type but does not include cstddef standard header.
This can lead to errors if <cstddef> is not included by config headers (happens if stdlib configuration part of config headers is disabled).
] cat smart1.cc
#include <boost/smart_ptr/intrusive_ptr.hpp>
] gcc smart1.cc -DBOOST_NO_CONFIG  -I .
In file included from ./boost/smart_ptr/intrusive_ptr.hpp:20:0,
                 from smart1.cc:1:
./boost/smart_ptr/detail/sp_convertible.hpp:61:25: error: 'std::size_t' has not been declared
]
I got this behavior on Solaris (with Solaris Studio compiler first), but I bet it does not matter.
There is a simple fix:
] git diff . diff --git a/include/boost/smart_ptr/detail/sp_convertible.hpp b/include/boost/smart_ptr/detail/sp_convertible.hpp index 31b2627..4bba9ed 100644 --- a/include/boost/smart_ptr/detail/sp_convertible.hpp +++ b/include/boost/smart_ptr/detail/sp_convertible.hpp @@ -16,6 +16,7 @@ // http://www.boost.org/LICENSE_1_0.txt #include <boost/config.hpp> +#include <cstddef> #if !defined( BOOST_SP_NO_SP_CONVERTIBLE ) && defined( BOOST_NO_SFINAE ) # define BOOST_SP_NO_SP_CONVERTIBLE ]
  Note:
 See   TracTickets
 for help on using tickets.
    