
HI ! We have a problem compiling Boost.threads v. 1.28 on SGI. We are running IRIX 6.5 with MipsPro Compiler 7.30 The command line we use is : 'bjam "-sTOOLS=mipspro"' The compiler retuns the following error: ---------------------------------------------------------------------- -------- cc-3161 CC: ERROR File = /ULTRA/depot/sdk/boost/boost_1_28_0/boost/thread/condition.hpp, Line = 94 A class-qualified name is required. typedef typename detail::thread::lock_ops<M> lock_ops; ^ A template was detected during header processing. instantiation of "void boost::condition::do_wait (boost::mutex &)" at line 49 instantiation of "void boost::condition::wait (boost::mutex::scoped_lock &)" at line 40 of "../src/thread.cpp" ---------------------------------------------------------------------- -------- Can anyone help us to solve the problem ? Thanks in advance

--- In Boost-Users@y..., "monteleone_a" <monteleone_a@y...> wrote:
HI ! We have a problem compiling Boost.threads v. 1.28 on SGI. We are running IRIX 6.5 with MipsPro Compiler 7.30
The command line we use is : 'bjam "-sTOOLS=mipspro"' The compiler retuns the following error:
-------------------------------------------------------------------- -- -------- cc-3161 CC: ERROR File = /ULTRA/depot/sdk/boost/boost_1_28_0/boost/thread/condition.hpp, Line = 94 A class-qualified name is required.
typedef typename detail::thread::lock_ops<M> lock_ops; ^ A template was detected during header processing. instantiation of "void boost::condition::do_wait (boost::mutex &)" at line 49 instantiation of "void boost::condition::wait (boost::mutex::scoped_lock &)" at line 40 of "../src/thread.cpp" -------------------------------------------------------------------- -- --------
Can anyone help us to solve the problem ?
Thanks in advance
I don't have access to this compiler and the error doesn't make much sense to me. Hopefully someone familiar with this platform can speak up here. Bill Kempf

cc-3161 CC: ERROR File = /ULTRA/depot/sdk/boost/boost_1_28_0/boost/thread/condition.hpp, Line = 94 A class-qualified name is required.
typedef typename detail::thread::lock_ops<M> lock_ops; ^ A template was detected during header processing. instantiation of "void boost::condition::do_wait (boost::mutex &)" at line 49 instantiation of "void boost::condition::wait (boost::mutex::scoped_lock &)" at line 40 of "../src/thread.cpp"
You only need to use typename with dependent qualified names, and the qualifier in this case (boost::thread) is not dependent, so the typename isn't required. In fact since the qualifier isn't even a type, I'm not actually sure that it is even legal, whatever changing to: typedef detail::thread::lock_ops<M> lock_ops; should do the trick. John Maddock http://ourworld.compuserve.com/homepages/john_maddock/index.htm

It works! We just removed the typename occurrencies that caused the errors and everything compiles!! Thank you very much for the trick. Antonio Monteleone --- In Boost-Users@y..., "John Maddock" <john_maddock@c...> wrote:
cc-3161 CC: ERROR File
= /ULTRA/depot/sdk/boost/boost_1_28_0/boost/thread/condition.hpp,
Line = 94 A class-qualified name is required.
typedef typename detail::thread::lock_ops<M> lock_ops; ^ A template was detected during header processing. instantiation of "void boost::condition::do_wait (boost::mutex &)" at line 49 instantiation of "void boost::condition::wait (boost::mutex::scoped_lock &)" at line 40 of "../src/thread.cpp"
You only need to use typename with dependent qualified names, and the qualifier in this case (boost::thread) is not dependent, so the typename isn't required. In fact since the qualifier isn't even a type, I'm not actually sure that it is even legal, whatever changing to:
typedef detail::thread::lock_ops<M> lock_ops;
should do the trick.
John Maddock http://ourworld.compuserve.com/homepages/john_maddock/index.htm
participants (3)
-
bill_kempf
-
John Maddock
-
monteleone_a