News:

Accounts with zero posts and zero activity during the last months will be deleted periodically to fight SPAM!

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.