Subject: [Boost-bugs] [Boost C++ Libraries] #9189: Solaris Studio 12.3, boost::log: explicit template instantiations need "template<>"
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2013-10-02 00:20:09
#9189: Solaris Studio 12.3, boost::log: explicit template instantiations need
"template<>"
-------------------------------------------------+-------------------------
Reporter: Brian Vandenberg <phantall+boost@â¦> | Type: Bugs
Status: new | Milestone: To Be
Component: None | Determined
Severity: Problem | Version: Boost
| 1.54.0
| Keywords:
-------------------------------------------------+-------------------------
When building libs/log/src/settings_parser.cpp with Solaris Studio 12.3,
I'm getting the following errors. FYI: I changed convert.hpp by applying
the fix suggested in ticket #7513.
{{{
"./boost/fusion/sequence/convert.hpp", line 23: Error: apply is not a
member of
boost::fusion::extension::convert_impl<boost::fusion::struct_tag>.
"./boost/fusion/mpl/push_front.hpp", line 28: Where: While
specializing "boost::fusion::result_of::convert</*...*/>"
/* A bunch more "While specialing" and "Specialized in" and "Instantiated
from" statements */
"libs/log/src/settings_parser.cpp", line 209: Where: Instantiated from
boost::log::v2s_mt_posix::parse_settings<char>(std::istream &).
"libs/log/src/settings_parser.cpp", line 237: Where: Instantiated from
non-template code.
"./boost/fusion/sequence/convert.hpp", line 25: Error:
boost::fusion::result_of::convert</*...*/>::gen is not a namespace or
class name.
/* ... */
"libs/log/src/settings_parser.cpp", line 209: Where: Instantiated from
boost::log::v2s_mt_posix::parse_settings<char>(std::istream &).
"libs/log/src/settings_parser.cpp", line 237: Where: Instantiated from
non-template code.
"./boost/fusion/sequence/convert.hpp", line 25: Error: No parameters
provided for template.
/* ... */
"libs/log/src/settings_parser.cpp", line 209: Where: Instantiated from
boost::log::v2s_mt_posix::parse_settings<char>(std::istream &).
"libs/log/src/settings_parser.cpp", line 237: Where: Instantiated from
non-template code.
"./boost/fusion/sequence/convert.hpp", line 25: Error: Redefining
boost::type<boost::T> after use in
boost::fusion::result_of::convert</*...*/>
/* ... */
"libs/log/src/settings_parser.cpp", line 209: Where: Instantiated from
boost::log::v2s_mt_posix::parse_settings<char>(std::istream &).
"libs/log/src/settings_parser.cpp", line 237: Where: Instantiated from
non-template code.
/* More errors afterward, but they appear to be repeats of existing errors
*/
}}}
The following change(s) will get rid of the errors:
{{{
208: #ifdef BOOST_LOG_USE_CHAR
-209: template BOOST_LOG_SETUP_API basic_settings< char > parse_settings<
char >/*...*/
+209: template<> BOOST_LOG_SETUP_API basic_settings< char >
parse_settings< char >/*...*/
210: #endif
211: #ifdef BOOST_LOG_USE_WCHAR_T
-212: template BOOST_LOG_SETUP_API basic_settings< wchar_t >
parse_settings< wchar_t >/*...*/
+212: template<> BOOST_LOG_SETUP_API basic_settings< wchar_t >
parse_settings< wchar_t >/*...*/
213: #endif
}}}
-- Ticket URL: <https://svn.boost.org/trac/boost/ticket/9189> Boost C++ Libraries <http://www.boost.org/> Boost provides free peer-reviewed portable C++ source libraries.
This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:14 UTC