News:

The new Release 25.03 is out! You can download binaries for Windows and many major Linux distros here .

Main Menu

Typedefs of templated classes

Started by childinsilence, September 28, 2010, 02:04:30 PM

Previous topic - Next topic

childinsilence

I tried the branch on Ubuntu 10.04 with boost 1.40. On my system (don't know if it should work) the cc fails to detect boost filesystems wpath. This is a typedef of a templated class:

typedef basic_path< std::wstring, wpath_traits > wpath;

Here is an example:

#include <boost/filesystem.hpp>

namespace bfs = boost::filesystem;

int main(void)
{
   boost::filesystem::wpath a; // not detected by cc, but "Find declaration of: wpath" hits the right line on 10.05.
   bfs::wpath b; // not detected by cc
   return 0;
}


As in the comment. On 10.05 the find declaration command of the current release detects wpath.

Greets

EDIT: It's revision 6650.

Loaden


childinsilence

#2
You're welcome.

Another example. Maybe another bug. Again boost 1.40 on Ubuntu 10.04 with revision 6650:

#include <boost/shared_ptr.hpp>

class Dummy
{
   Dummy();
   int m_dummy;
};
typedef boost::shared_ptr<Dummy> DummyPtr;

int main(void)
{
   DummyPtr ptrDummy = DummyPtr(new Dummy());
   ptrDummy->m_dummy; // Does not work. Shows members of boost::shared_ptr instead of Dummy.
   ptrDummy.get(); // Does the right.
   return 0;
}


Cc returns a list of all symbols of boost::shared_ptr, but not m_dummy on the "->" operator. The dot operator does the right.

template<typename T> class shared_ptr;

Cheers!

childinsilence

Applied the patch and found wpath. Thank you. Still didn't found m_dummy.

Loaden

Quote from: childinsilence on September 29, 2010, 10:58:58 AM
Applied the patch and found wpath. Thank you. Still didn't found m_dummy.
I will look into it. :)

blueshake

Quote from: childinsilence on September 28, 2010, 05:00:26 PM
You're welcome.

Another example. Maybe another bug. Again boost 1.40 on Ubuntu 10.04 with revision 6650:

#include <boost/shared_ptr.hpp>

class Dummy
{
    Dummy();
    int m_dummy;
};
typedef boost::shared_ptr<Dummy> DummyPtr;

int main(void)
{
    DummyPtr ptrDummy = DummyPtr(new Dummy());
    ptrDummy->m_dummy; // Does not work. Shows members of boost::shared_ptr instead of Dummy.
    ptrDummy.get(); // Does the right.
    return 0;
}


Cc returns a list of all symbols of boost::shared_ptr, but not m_dummy on the "->" operator. The dot operator does the right.

template<typename T> class shared_ptr;

Cheers!

should be fixed  in the next nightly build 8)
Keep low and hear the sadness of little dog.
I fall in love with a girl,but I don't dare to tell her.What should I do?

childinsilence

"ptrDummy->m_dummy" isn't fixed in rev. 6701, which subsequents nightly build of rev. 6688.
May this be a consequence of overloading the "->" operator in boost::shared_ptr?

Borr

Quote from: childinsilence on October 11, 2010, 09:41:56 AM
May this be a consequence of overloading the "->" operator in boost::shared_ptr?

I think for this reason Codecombletion does not work for the IBPP
http://forums.next.codeblocks.org/index.php/topic,13338.msg90045.html#msg90045

childinsilence

Quote from: childinsilence on October 11, 2010, 09:41:56 AM
"ptrDummy->m_dummy" isn't fixed in rev. 6701, which subsequents nightly build of rev. 6688.
May this be a consequence of overloading the "->" operator in boost::shared_ptr?

Isn't fixed in 6906.