Uploaded image for project: 'C++ Standard Library'
  1. C++ Standard Library
  2. STDCXX-152

error instantiating std::map on an incomplete type

    XMLWordPrintableJSON

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Critical
    • Resolution: Fixed
    • Affects Version/s: 4.1.2, 4.1.3, 4.1.4, 4.2.0, 4.2.1
    • Fix Version/s: 4.2.2
    • Component/s: 23. Containers
    • Labels:
      None
    • Environment:

      all

    • Patch Info:
      Patch Available
    • Severity:
      Compiler Error

      Description

      From http://mail-archives.apache.org/mod_mbox/incubator-stdcxx-user/200602.mbox/%3c20060215231134.6717.qmail@web82211.mail.mud.yahoo.com%3e:

      I am trying to use Boost built using stdcxx on Solaris. I was able to build the date_time
      library but when I try to compile a test program I end up with errors related to incomplete
      types. I have narrowed the issue to the following code

      #include <map>
      #include <string>
      using namespace std;
      template <class T>
      struct C {
      typedef multimap<T,C> maps;
      typedef typename maps::value_type value_type;
      };

      int main () {
      C<std::string> c;
      }

      When I compile using the default Sun CC libraries or rwtools7_std or stlport4, the code
      compiles fine. But when I compile using stdcxx, I end up with the following errors.

      "/opt/idev3/dbapatla/apache-stdcxx-4.1.3/include/rw/_pair.h", line 55: Error: In this declaration
      "second" is of an incomplete type "C<std::string>".
      "/opt/idev3/dbapatla/apache-stdcxx-4.1.3/include/rw/_tree.h", line 86: Where: While specializing
      "std::pair<const std::string, C<std::string>>".
      "/opt/idev3/dbapatla/apache-stdcxx-4.1.3/include/rw/_tree.h", line 86: Where: Specialized
      in _rw::_rw_rb_tree_node<std::allocator<std::pair<const std::string, C<std::string>>>,
      std::pair<const std::string, C<std::string>>, std::string, _rw::_select1st<std::pair<const
      std::string, C<std::string>>, std::string>>.
      "/opt/idev3/dbapatla/apache-stdcxx-4.1.3/include/rw/_tree.h", line 259: Where: Specialized
      in _rw::_rb_tree<std::string, std::pair<const std::string, C<std::string>>,
      _rw::_select1st<std::pair<const std::string, C<std::string>>, std::string>,
      std::less<std::string>, std::allocator<std::pair<const std::string, C<std::string>>>>.
      "/opt/idev3/dbapatla/apache-stdcxx-4.1.3/include/map", line 323: Where: Specialized in
      std::multimap<std::string, C<std::string>, std::less<std::string>, std::allocator<std::pair<const
      std::string, C<std::string>>>>.
      "test2.cpp", line 9: Where: Specialized in C<std::string>.
      "test2.cpp", line 13: Where: Specialized in non-template code.
      1 Error(s) detected.

        Attachments

          Activity

            People

            • Assignee:
              farid Farid Zaripov
              Reporter:
              sebor Martin Sebor
            • Votes:
              2 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Time Tracking

                Estimated:
                Original Estimate - 16h
                16h
                Remaining:
                Time Spent - 2h Remaining Estimate - 14h
                14h
                Logged:
                Time Spent - 2h Remaining Estimate - 14h
                2h