http://llvm.org/bugs/show_bug.cgi?id=9906

           Summary: Clang incorrectly fails to detect nested struct in
                    class definition with Boost.
           Product: clang
           Version: 2.9
          Platform: Macintosh
        OS/Version: MacOS X
            Status: NEW
          Severity: normal
          Priority: P
         Component: -New Bugs
        AssignedTo: [email protected]
        ReportedBy: [email protected]
                CC: [email protected]


Overview:
  In a program which #includes boost's Trim algorithm, if both the boost and
std namespace are brought into the global namespace with a "using" declaration,
the compiler will improperly fail to detect an internal struct of a class named
"iterator".

Steps to Reproduce (Note: There may be simpler steps to reproduce): 

1. Create a new command line program project in xcode 4.0.2.
2. Change program text to:

#include <boost/algorithm/string/trim.hpp>

using namespace std;
using namespace boost;

class Test {
    struct iterator {

    };

    friend struct Test::iterator;
};

int main (int argc, const char * argv[])
{
    return 0;
}

3. Install Boost 1.41
4. Add reference to Boost 1.41 to project's header referenes.




Actual Results: 

/Compiler Breaker/Compiler Breaker/Compiler
Breaker/main.cpp:19:25:{19:19-19:25}: error: no struct named 'iterator' in
'Test' [2]

Expected Results: Program should compile normally.

Build Date & Platform: 
clang --version
Apple clang version 2.0 (tags/Apple/clang-139) (based on LLVM 2.9svn)
Target: x86_64-apple-darwin10
Thread model: posix

Additional Information:

Removing either Using Namespace tag will cause the error to go away.
Renaming the struct from "iterator" to "notiterator" will cause the error to go
away.
Program compiles without objection in LLVM GCC 4.2. A much more complicated
version of the program compiled successfully in visual studios 2005.
There is a struct iterator class added to the boost namespace in
boost/iterator.hpp line 55.
There is a struct iterator class added to the std namespace in
stl_iterator_base_types.h in the mac os 10.6 sdk.

-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
_______________________________________________
LLVMbugs mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs

Reply via email to