OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-stable/] [gcc-4.5.1/] [libstdc++-v3/] [doc/] [xml/] [manual/] [intro.xml] - Blame information for rev 826

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 424 jeremybenn
2
3
 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
4
[ ]>
5
 
6
7
8
 
9
10
  
11
    
12
      ISO C++
13
    
14
    
15
      library
16
    
17
  
18
19
 
20
</code></pre></td>
      </tr>
      <tr valign="middle">
         <td>21</td>
         <td></td>
         <td></td>
         <td class="code"><pre><code>  Introduction</code></pre></td>
      </tr>
      <tr valign="middle">
         <td>22</td>
         <td></td>
         <td></td>
         <td class="code"><pre><code>  <indexterm><primary>Introduction</primary></indexterm></code></pre></td>
      </tr>
      <tr valign="middle">
         <td>23</td>
         <td></td>
         <td></td>
         <td class="code"><pre><code>
24
25
26
  
27
  Status
28
 
29
  
30
  
31
    Implementation Status
32
 
33
    
34
    
35
                parse="xml" href="status_cxx1998.xml">
36
    
37
 
38
    
39
    
40
                parse="xml" href="status_cxx200x.xml">
41
    
42
 
43
    
44
    
45
                parse="xml" href="status_cxxtr1.xml">
46
    
47
 
48
    
49
    
50
                parse="xml" href="status_cxxtr24733.xml">
51
    
52
  
53
 
54
  
55
  
56
    
57
    License
58
    
59
    There are two licenses affecting GNU libstdc++: one for the code,
60
    and one for the documentation.
61
    
62
 
63
    
64
      There is a license section in the FAQ regarding common 
65
      linkend="faq.license">questions. If you have more
66
      questions, ask the FSF or the 
67
      url="http://gcc.gnu.org/lists.html">gcc mailing list.
68
    
69
 
70
    
71
    The Code: GPL
72
 
73
    
74
      The source code is distributed under the 
75
      linkend="appendix.gpl-3.0">GNU General Public License version 3,
76
      with the addition under section 7 of an exception described in
77
      the GCC Runtime Library Exception, version 3.1
78
      as follows (or see the file COPYING.RUNTIME):
79
    
80
 
81
    
82
GCC RUNTIME LIBRARY EXCEPTION
83
 
84
Version 3.1, 31 March 2009
85
 
86
Copyright (C) 2009 Free Software Foundation, Inc.
87
 
88
Everyone is permitted to copy and distribute verbatim copies of this
89
license document, but changing it is not allowed.
90
 
91
This GCC Runtime Library Exception ("Exception") is an additional
92
permission under section 7 of the GNU General Public License, version
93
3 ("GPLv3"). It applies to a given file (the "Runtime Library") that
94
bears a notice placed by the copyright holder of the file stating that
95
the file is governed by GPLv3 along with this Exception.
96
 
97
When you use GCC to compile a program, GCC may combine portions of
98
certain GCC header files and runtime libraries with the compiled
99
program. The purpose of this Exception is to allow compilation of
100
non-GPL (including proprietary) programs to use, in this way, the
101
header files and runtime libraries covered by this Exception.
102
 
103
0. Definitions.
104
 
105
A file is an "Independent Module" if it either requires the Runtime
106
Library for execution after a Compilation Process, or makes use of an
107
interface provided by the Runtime Library, but is not otherwise based
108
on the Runtime Library.
109
 
110
"GCC" means a version of the GNU Compiler Collection, with or without
111
modifications, governed by version 3 (or a specified later version) of
112
the GNU General Public License (GPL) with the option of using any
113
subsequent versions published by the FSF.
114
 
115
"GPL-compatible Software" is software whose conditions of propagation,
116
modification and use would permit combination with GCC in accord with
117
the license of GCC.
118
 
119
"Target Code" refers to output from any compiler for a real or virtual
120
target processor architecture, in executable form or suitable for
121
input to an assembler, loader, linker and/or execution
122
phase. Notwithstanding that, Target Code does not include data in any
123
format that is used as a compiler intermediate representation, or used
124
for producing a compiler intermediate representation.
125
 
126
The "Compilation Process" transforms code entirely represented in
127
non-intermediate languages designed for human-written code, and/or in
128
Java Virtual Machine byte code, into Target Code. Thus, for example,
129
use of source code generators and preprocessors need not be considered
130
part of the Compilation Process, since the Compilation Process can be
131
understood as starting with the output of the generators or
132
preprocessors.
133
 
134
A Compilation Process is "Eligible" if it is done using GCC, alone or
135
with other GPL-compatible software, or if it is done without using any
136
work based on GCC. For example, using non-GPL-compatible Software to
137
optimize any GCC intermediate representations would not qualify as an
138
Eligible Compilation Process.
139
 
140
1. Grant of Additional Permission.
141
 
142
You have permission to propagate a work of Target Code formed by
143
combining the Runtime Library with Independent Modules, even if such
144
propagation would otherwise violate the terms of GPLv3, provided that
145
all Target Code was generated by Eligible Compilation Processes. You
146
may then convey such a combination under terms of your choice,
147
consistent with the licensing of the Independent Modules.
148
 
149
2. No Weakening of GCC Copyleft.
150
 
151
The availability of this Exception does not imply any general
152
presumption that third-party software is unaffected by the copyleft
153
requirements of the license of GCC.
154
    
155
 
156
    
157
      Hopefully that text is self-explanatory.  If it isn't, you need to speak
158
      to your lawyer, or the Free Software Foundation.
159
    
160
    
161
 
162
    
163
    The Documentation: GPL, FDL
164
 
165
    
166
      The documentation shipped with the library and made available over
167
      the web, excluding the pages generated from source comments, are
168
      copyrighted by the Free Software Foundation, and placed under the
169
       GNU Free Documentation
170
      License version 1.2.  There are no Front-Cover Texts, no
171
      Back-Cover Texts, and no Invariant Sections.
172
    
173
 
174
    
175
      For documentation generated by doxygen or other automated tools
176
      via processing source code comments and markup, the original source
177
      code license applies to the generated files. Thus, the doxygen
178
      documents are licensed GPL.
179
    
180
 
181
    
182
      If you plan on making copies of the documentation, please let us know.
183
      We can probably offer suggestions.
184
    
185
    
186
 
187
  
188
 
189
  
190
  
191
    
192
    Bugs
193
 
194
    
195
      Implementation Bugs
196
    
197
      Information on known bugs, details on efforts to fix them, and
198
      fixed bugs are all available as part of the 
199
      url="http://gcc.gnu.org/bugs/">GCC bug tracking system,
200
      with the category set to libstdc++.
201
    
202
    
203
 
204
    
205
      Standard Bugs
206
      
207
        Everybody's got issues.  Even the C++ Standard Library.
208
      
209
      
210
        The Library Working Group, or LWG, is the ISO subcommittee responsible
211
        for making changes to the library.  They periodically publish an
212
        Issues List containing problems and possible solutions.  As they reach
213
        a consensus on proposed solutions, we often incorporate the solution.
214
      
215
      
216
        Here are the issues which have resulted in code changes to the library.
217
        The links are to the specific defect reports from a partial
218
        copy of the Issues List.  You can read the full version online
219
        at the ISO C++
220
        Committee homepage, linked to on the
221
        GCC "Readings"
222
        page.  If
223
        you spend a lot of time reading the issues, we recommend downloading
224
        the ZIP file and reading them locally.
225
      
226
      
227
        (NB: partial copy means that not all
228
        links within the lwg-*.html pages will work.  Specifically,
229
        links to defect reports that have not been accorded full DR
230
        status will probably break.  Rather than trying to mirror the
231
        entire issues list on our overworked web server, we recommend
232
        you go to the LWG homepage instead.)
233
      
234
      
235
        If a DR is not listed here, we may simply not have gotten to
236
        it yet; feel free to submit a patch.  Search the include/bits
237
        and src directories for appearances of
238
        _GLIBCXX_RESOLVE_LIB_DEFECTS for examples
239
        of style.  Note that we usually do not make changes to the
240
        code until an issue has reached DR status.
241
      
242
 
243
      
244
    5:
245
        string::compare specification questionable
246
    
247
    This should be two overloaded functions rather than a single function.
248
    
249
 
250
    17:
251
        Bad bool parsing
252
    
253
    Apparently extracting Boolean values was messed up...
254
    
255
 
256
    19:
257
        "Noconv" definition too vague
258
    
259
    If codecvt::do_in returns noconv there are
260
        no changes to the values in [to, to_limit).
261
    
262
 
263
    22:
264
        Member open vs flags
265
    
266
    Re-opening a file stream does not clear the state flags.
267
    
268
 
269
    23:
270
        Num_get overflow result
271
    
272
    Implement the proposed resolution.
273
    
274
 
275
    25:
276
        String operator<< uses width() value wrong
277
    
278
    Padding issues.
279
    
280
 
281
    48:
282
        Use of non-existent exception constructor
283
    
284
    An instance of ios_base::failure is constructed instead.
285
    
286
 
287
    49:
288
        Underspecification of ios_base::sync_with_stdio
289
    
290
    The return type is the previous state of synchronization.
291
    
292
 
293
    50:
294
        Copy constructor and assignment operator of ios_base
295
    
296
    These members functions are declared private and are
297
        thus inaccessible.  Specifying the correct semantics of
298
        "copying stream state" was deemed too complicated.
299
    
300
 
301
    60:
302
        What is a formatted input function?
303
    
304
    This DR made many widespread changes to basic_istream
305
        and basic_ostream all of which have been implemented.
306
    
307
 
308
    63:
309
        Exception-handling policy for unformatted output
310
    
311
    Make the policy consistent with that of formatted input, unformatted
312
        input, and formatted output.
313
    
314
 
315
    68:
316
        Extractors for char* should store null at end
317
    
318
    And they do now.  An editing glitch in the last item in the list of
319
        [27.6.1.2.3]/7.
320
    
321
 
322
    74:
323
        Garbled text for codecvt::do_max_length
324
    
325
    The text of the standard was gibberish.  Typos gone rampant.
326
    
327
 
328
    75:
329
        Contradiction in codecvt::length's argument types
330
    
331
    Change the first parameter to stateT& and implement
332
        the new effects paragraph.
333
    
334
 
335
    83:
336
        string::npos vs. string::max_size()
337
    
338
    Safety checks on the size of the string should test against
339
        max_size() rather than npos.
340
    
341
 
342
    90:
343
        Incorrect description of operator>> for strings
344
    
345
    The effect contain isspace(c,getloc()) which must be
346
        replaced by isspace(c,is.getloc()).
347
    
348
 
349
    91:
350
        Description of operator>> and getline() for string<>
351
            might cause endless loop
352
    
353
    They behave as a formatted input function and as an unformatted
354
        input function, respectively (except that getline is
355
        not required to set gcount).
356
    
357
 
358
    103:
359
        set::iterator is required to be modifiable, but this allows
360
            modification of keys.
361
    
362
    For associative containers where the value type is the same as
363
        the key type, both iterator and const_iterator
364
         are constant iterators.
365
    
366
 
367
    109:
368
        Missing binders for non-const sequence elements
369
    
370
    The binder1st and binder2nd didn't have an
371
        operator() taking a non-const parameter.
372
    
373
 
374
    110:
375
        istreambuf_iterator::equal not const
376
    
377
    This was not a const member function.  Note that the DR says to
378
        replace the function with a const one; we have instead provided an
379
        overloaded version with identical contents.
380
    
381
 
382
    117:
383
        basic_ostream uses nonexistent num_put member functions
384
    
385
    num_put::put() was overloaded on the wrong types.
386
    
387
 
388
    118:
389
        basic_istream uses nonexistent num_get member functions
390
    
391
    Same as 117, but for num_get::get().
392
    
393
 
394
    129:
395
        Need error indication from seekp() and seekg()
396
    
397
    These functions set failbit on error now.
398
    
399
 
400
    130:
401
        Return type of container::erase(iterator) differs for associative containers
402
    
403
    Make member erase return iterator for set, multiset, map, multimap.
404
    
405
 
406
    136:
407
        seekp, seekg setting wrong streams?
408
    
409
    seekp should only set the output stream, and
410
        seekg should only set the input stream.
411
    
412
 
413
419
 
420
    167:
421
        Improper use of traits_type::length()
422
    
423
    op<< with a const char* was
424
        calculating an incorrect number of characters to write.
425
    
426
 
427
    169:
428
        Bad efficiency of overflow() mandated
429
    
430
    Grow efficiently the internal array object.
431
    
432
 
433
    171:
434
        Strange seekpos() semantics due to joint position
435
    
436
    Quite complex to summarize...
437
    
438
 
439
    181:
440
        make_pair() unintended behavior
441
    
442
    This function used to take its arguments as reference-to-const, now
443
        it copies them (pass by value).
444
    
445
 
446
    195:
447
        Should basic_istream::sentry's constructor ever set eofbit?
448
    
449
    Yes, it can, specifically if EOF is reached while skipping whitespace.
450
    
451
 
452
    211:
453
        operator>>(istream&, string&) doesn't set failbit
454
    
455
    If nothing is extracted into the string, op>> now
456
        sets failbit (which can cause an exception, etc., etc.).
457
    
458
 
459
    214:
460
        set::find() missing const overload
461
    
462
    Both set and multiset were missing
463
        overloaded find, lower_bound, upper_bound, and equal_range functions
464
        for const instances.
465
    
466
 
467
    231:
468
        Precision in iostream?
469
    
470
    For conversion from a floating-point type, str.precision()
471
        is specified in the conversion specification.
472
    
473
 
474
    233:
475
        Insertion hints in associative containers
476
    
477
    Implement N1780, first check before then check after, insert as close
478
        to hint as possible.
479
    
480
 
481
    235:
482
        No specification of default ctor for reverse_iterator
483
    
484
    The declaration of reverse_iterator lists a default constructor.
485
        However, no specification is given what this constructor should do.
486
    
487
 
488
    241:
489
        Does unique_copy() require CopyConstructible and Assignable?
490
    
491
    Add a helper for forward_iterator/output_iterator, fix the existing
492
        one for input_iterator/output_iterator to not rely on Assignability.
493
    
494
 
495
    243:
496
        get and getline when sentry reports failure
497
    
498
    Store a null character only if the character array has a non-zero size.
499
    
500
 
501
    251:
502
        basic_stringbuf missing allocator_type
503
    
504
    This nested typedef was originally not specified.
505
    
506
 
507
    253:
508
        valarray helper functions are almost entirely useless
509
    
510
    Make the copy constructor and copy-assignment operator declarations
511
        public in gslice_array, indirect_array, mask_array, slice_array; provide
512
        definitions.
513
    
514
 
515
    265:
516
        std::pair::pair() effects overly restrictive
517
    
518
    The default ctor would build its members from copies of temporaries;
519
        now it simply uses their respective default ctors.
520
    
521
 
522
    266:
523
        bad_exception::~bad_exception() missing Effects clause
524
    
525
    The bad_* classes no longer have destructors (they
526
        are trivial), since no description of them was ever given.
527
    
528
 
529
    271:
530
        basic_iostream missing typedefs
531
    
532
    The typedefs it inherits from its base classes can't be used, since
533
        (for example) basic_iostream<T>::traits_type is ambiguous.
534
    
535
 
536
    275:
537
        Wrong type in num_get::get() overloads
538
    
539
    Similar to 118.
540
    
541
 
542
    280:
543
        Comparison of reverse_iterator to const reverse_iterator
544
    
545
    Add global functions with two template parameters.
546
        (NB: not added for now a templated assignment operator)
547
    
548
 
549
    292:
550
        Effects of a.copyfmt (a)
551
    
552
    If (this == &rhs) do nothing.
553
    
554
 
555
    300:
556
        List::merge() specification incomplete
557
    
558
    If (this == &x) do nothing.
559
    
560
 
561
    303:
562
        Bitset input operator underspecified
563
    
564
    Basically, compare the input character to
565
                    is.widen(0) and is.widen(1).
566
    
567
 
568
    305:
569
        Default behavior of codecvt<wchar_t, char,
570
                  mbstate_t>::length()
571
    
572
    Do not specify what codecvt<wchar_t, char,
573
                    mbstate_t>::do_length must return.
574
    
575
 
576
    328:
577
        Bad sprintf format modifier in
578
                  money_put<>::do_put()
579
    
580
    Change the format string to "%.0Lf".
581
    
582
 
583
    365:
584
        Lack of const-qualification in clause 27
585
    
586
    Add const overloads of is_open.
587
    
588
 
589
    387:
590
        std::complex over-encapsulated
591
    
592
    Add the real(T) and imag(T)
593
                    members;  in C++0x mode, also adjust the existing
594
                    real() and imag() members and
595
                    free functions.
596
    
597
 
598
    389:
599
        Const overload of valarray::operator[] returns
600
                  by value
601
    
602
    Change it to return a const T&.
603
    
604
 
605
    396:
606
        what are characters zero and one
607
    
608
    Implement the proposed resolution.
609
    
610
 
611
    402:
612
        Wrong new expression in [some_]allocator::construct
613
    
614
    Replace "new" with "::new".
615
    
616
 
617
    408:
618
        
619
        Is vector<reverse_iterator<char*> > forbidden?
620
        
621
    
622
    Tweak the debug-mode checks in _Safe_iterator.
623
    
624
 
625
    409:
626
        Closing an fstream should clear the error state
627
    
628
    Have open clear the error flags.
629
    
630
 
631
    431:
632
        Swapping containers with unequal allocators
633
    
634
    Implement Option 3, as per N1599.
635
    
636
 
637
    432:
638
        stringbuf::overflow() makes only one write position
639
            available
640
    
641
    Implement the resolution, beyond DR 169.
642
    
643
 
644
    434:
645
        bitset::to_string() hard to use
646
    
647
    Add three overloads, taking fewer template arguments.
648
    
649
 
650
    438:
651
        Ambiguity in the "do the right thing" clause
652
    
653
    Implement the resolution, basically cast less.
654
    
655
 
656
    453:
657
        basic_stringbuf::seekoff need not always fail for an empty stream
658
    
659
    Don't fail if the next pointer is null and newoff is zero.
660
    
661
 
662
    455:
663
        cerr::tie() and wcerr::tie() are overspecified
664
    
665
    Initialize cerr tied to cout and wcerr tied to wcout.
666
    
667
 
668
    464:
669
        Suggestion for new member functions in standard containers
670
    
671
    Add data() to std::vector and
672
        at(const key_type&) to std::map.
673
    
674
 
675
    508:
676
        Bad parameters for ranlux64_base_01
677
    
678
    Fix the parameters.
679
    
680
 
681
    512:
682
        Seeding subtract_with_carry_01 from a single unsigned long
683
    
684
    Construct a linear_congruential engine and seed with it.
685
    
686
 
687
    526:
688
        Is it undefined if a function in the standard changes in
689
            parameters?
690
    
691
    Use &value.
692
    
693
 
694
    538:
695
        241 again: Does unique_copy() require CopyConstructible
696
            and Assignable?
697
    
698
    In case of input_iterator/output_iterator rely on Assignability of
699
        input_iterator' value_type.
700
    
701
 
702
    539:
703
        partial_sum and adjacent_difference should mention
704
            requirements
705
    
706
    We were almost doing the right thing, just use std::move
707
        in adjacent_difference.
708
    
709
 
710
    541:
711
        shared_ptr template assignment and void
712
    
713
    Add an auto_ptr<void> specialization.
714
    
715
 
716
    543:
717
        valarray slice default constructor
718
    
719
    Follow the straightforward proposed resolution.
720
    
721
 
722
    550:
723
        What should the return type of pow(float,int) be?
724
    
725
    In C++0x mode, remove the pow(float,int), etc., signatures.
726
    
727
 
728
    586:
729
        string inserter not a formatted function
730
    
731
    Change it to be a formatted output function (i.e. catch exceptions).
732
    
733
 
734
    596:
735
        27.8.1.3 Table 112 omits "a+" and "a+b" modes
736
    
737
    Add the missing modes to fopen_mode.
738
    
739
 
740
    630:
741
        arrays of valarray
742
    
743
    Implement the simple resolution.
744
    
745
 
746
    660:
747
        Missing bitwise operations
748
    
749
    Add the missing operations.
750
    
751
 
752
    691:
753
        const_local_iterator cbegin, cend missing from TR1
754
    
755
    In C++0x mode add cbegin(size_type) and cend(size_type)
756
                    to the unordered containers.
757
    
758
 
759
    693:
760
        std::bitset::all() missing
761
    
762
    Add it, consistently with the discussion.
763
    
764
 
765
    695:
766
        ctype<char>::classic_table() not accessible
767
    
768
    Make the member functions table and classic_table public.
769
    
770
 
771
    696:
772
        istream::operator>>(int&) broken
773
    
774
    Implement the straightforward resolution.
775
    
776
 
777
    761:
778
        unordered_map needs an at() member function
779
    
780
    In C++0x mode, add at() and at() const.
781
    
782
 
783
    775:
784
        Tuple indexing should be unsigned?
785
    
786
    Implement the int -> size_t replacements.
787
    
788
 
789
    776:
790
        Undescribed assign function of std::array
791
    
792
    In C++0x mode, remove assign, add fill.
793
    
794
 
795
    781:
796
        std::complex should add missing C99 functions
797
    
798
    In C++0x mode, add std::proj.
799
    
800
 
801
    809:
802
        std::swap should be overloaded for array types
803
    
804
    Add the overload.
805
    
806
 
807
    844:
808
        complex pow return type is ambiguous
809
    
810
    In C++0x mode, remove the pow(complex<T>, int) signature.
811
    
812
 
813
    853:
814
        to_string needs updating with zero and one
815
    
816
    Update / add the signatures.
817
    
818
 
819
    865:
820
        More algorithms that throw away information
821
    
822
    The traditional HP / SGI return type and value is blessed
823
                    by the resolution of the DR.
824
    
825
  
826
 
827
 
828
  
829
830
 
831
 
832
833
834
  
835
  Setup
836
 
837
   To transform libstdc++ sources into installed include files
838
   and properly built binaries useful for linking to other software is
839
   a multi-step process. Steps include getting the sources,
840
   configuring and building the sources, testing, and installation.
841
   
842
 
843
   The general outline of commands is something like:
844
   
845
 
846
   
847
   get gcc sources
848
   extract into gccsrcdir
849
   mkdir gccbuilddir
850
   cd gccbuilddir
851
   gccsrcdir/configure --prefix=destdir --other-opts...
852
   make
853
   make check
854
   make install
855
   
856
 
857
   
858
     Each step is described in more detail in the following sections.
859
   
860
 
861
  
862
  
863
              parse="xml" href="prerequisites.xml">
864
  
865
 
866
  
867
  
868
              parse="xml" href="configure.xml">
869
  
870
 
871
  
872
873
  
874
Make
875
   If you have never done this before, you should read the basic
876
      GCC Installation
877
      Instructions first.  Read all of them.
878
      Twice.
879
   
880
 
881
Then type:make, and congratulations, you're
882
started to build.
883
884
 
885
886
 
887
888
 
889
890
891
            parse="xml" href="using.xml">
892
893
 
894

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.