Boost logo

Boost Users :

From: JULES D'ENTREMONT (jules.dentremont_at_[hidden])
Date: 2001-12-17 11:24:10


Hi,

I'm trying to use boost::tokenizer to tokenize colon-separated strings
of the form "path1:path2:path3...".

I wrote the following simple test program:
#include <string>
#include "boost/tokenizer.hpp"

void func()
{
  std::string s("abc:def:ghi");

  boost::char_delimiters_separator<char> tokenizerFunc(false, "", ":");
  boost::tokenizer<boost::char_delimiters_separator<char> >
    tokenizer(s, tokenizerFunc);
}

However, this fails to compile with the Sun Forte 6U2 compiler. It
spews out the following error messages:

"/nsm/rollsbuild/thirdparty/boost/boost_1_25_0/boost/detail/ob_compressed_pair.hpp",
line 416: Warning (Anachronism): Type names qualified by template
parameters require "typename".
"/nsm/rollsbuild/thirdparty/boost/boost_1_25_0/boost/detail/ob_compressed_pair.hpp",
line 416: Warning (Anachronism): Type names qualified by template
parameters require "typename".
"/nsm/rollsbuild/thirdparty/boost/boost_1_25_0/boost/detail/iterator.hpp",
line 382: Warning (Anachronism): Type names qualified by template
parameters require "typename".
"/nsm/rollsbuild/thirdparty/boost/boost_1_25_0/boost/detail/iterator.hpp",
line 382: Warning (Anachronism): Type names qualified by template
parameters require "typename".
"/nsm/rollsbuild/thirdparty/boost/boost_1_25_0/boost/iterator_adaptors.hpp",
line 922: Error: Invalid template parameter default.
"/nsm/rollsbuild/thirdparty/boost/boost_1_25_0/boost/iterator_adaptors.hpp",
line 925: Error: Invalid template parameter default.
"/nsm/rollsbuild/thirdparty/boost/boost_1_25_0/boost/iterator_adaptors.hpp",
line 1116: Warning (Anachronism): Type names qualified by template
parameters require "typename".
"/nsm/rollsbuild/thirdparty/boost/boost_1_25_0/boost/iterator_adaptors.hpp",
line 1133: Error: value is not a member of
boost::is_convertible<boost::detail::reduce_to_base_class<std::forward_iterator_tag,
boost::detail::iterator_traits<boost::detail::Iterator>::iterator_category>::type*,
std::bidirectional_iterator_tag*>.
"/nsm/rollsbuild/thirdparty/boost/boost_1_25_0/boost/token_iterator.hpp",
line 90: Where: While specializing
"boost::detail::non_bidirectional_category<const char*>".
"/nsm/rollsbuild/thirdparty/boost/boost_1_25_0/boost/token_iterator.hpp",
line 90: Where: Specialized in
boost::token_iterator_generator<boost::char_delimiters_separator<char,
std::char_traits<char>>, const char*, std::basic_string<char,
std::char_traits<char>, std::allocator<char>>>.
"/nsm/rollsbuild/thirdparty/boost/boost_1_25_0/boost/tokenizer.hpp",
line 37: Where: Specialized in
boost::tokenizer<boost::char_delimiters_separator<char,
std::char_traits<char>>, const char*, std::basic_string<char,
std::char_traits<char>, std::allocator<char>>>.
"boostTest.cc", line 10: Where: Specialized in non-template code.
"/nsm/rollsbuild/thirdparty/boost/boost_1_25_0/boost/iterator_adaptors.hpp",
line 1133: Error: An integer constant expression is required here.
"/nsm/rollsbuild/thirdparty/boost/boost_1_25_0/boost/token_iterator.hpp",
line 90: Where: While specializing
"boost::detail::non_bidirectional_category<const char*>".
"/nsm/rollsbuild/thirdparty/boost/boost_1_25_0/boost/token_iterator.hpp",
line 90: Where: Specialized in
boost::token_iterator_generator<boost::char_delimiters_separator<char,
std::char_traits<char>>, const char*, std::basic_string<char,
std::char_traits<char>, std::allocator<char>>>.
"/nsm/rollsbuild/thirdparty/boost/boost_1_25_0/boost/tokenizer.hpp",
line 37: Where: Specialized in
boost::tokenizer<boost::char_delimiters_separator<char,
std::char_traits<char>>, const char*, std::basic_string<char,
std::char_traits<char>, std::allocator<char>>>.
"boostTest.cc", line 10: Where: Specialized in non-template code.
"/nsm/rollsbuild/thirdparty/boost/boost_1_25_0/boost/iterator_adaptors.hpp",
line 1134: Error: The type "boost::STATIC_ASSERTION_FAILURE<0>" is
incomplete.
"/nsm/rollsbuild/thirdparty/boost/boost_1_25_0/boost/token_iterator.hpp",
line 90: Where: While specializing
"boost::detail::non_bidirectional_category<const char*>".
"/nsm/rollsbuild/thirdparty/boost/boost_1_25_0/boost/token_iterator.hpp",
line 90: Where: Specialized in
boost::token_iterator_generator<boost::char_delimiters_separator<char,
std::char_traits<char>>, const char*, std::basic_string<char,
std::char_traits<char>, std::allocator<char>>>.
"/nsm/rollsbuild/thirdparty/boost/boost_1_25_0/boost/tokenizer.hpp",
line 37: Where: Specialized in
boost::tokenizer<boost::char_delimiters_separator<char,
std::char_traits<char>>, const char*, std::basic_string<char,
std::char_traits<char>, std::allocator<char>>>.
"boostTest.cc", line 10: Where: Specialized in non-template code.
5 Error(s) and 7 Warning(s) detected.
*** Error code 5

Am I using the class incorrectly, or is this a genuine problem?

Jules d'Entremont

--
Jules d'Entremont        jules.dentremont_at_[hidden]
Alcatel Canada           http://batai.ca.newbridge.com/~julesd
600 March Road           613-784-6633
Kanata ON, K2K 2E6

Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net