Hej Jesper,
>
> Det virker da også meget mere logisk. Jeg ville vedhæfte dokumentationen
fra
> Borland Builder 5's hjælpefil, men det må jeg ikke. Det er ellers der jeg
> har det fra.
Borlands dokumentation er _ikke_ C++ Standarden.
>
> (Var der nogen, der sagde at Borland havde bedre implementering af
Standard
> Library, Mogens?
)
Oh Gud - nu kunne jeg jo give mig til at håne dig i højlydte vendinger.
Bedre end hvad ?
Det er jo skuffende at blive citeret ukorrekt og ude af kontekst. Den slags
kan man kun miste respekten for. Du har i hvert fald ikke øget min lyst til
at hjælpe dig fremover. Jeg har tilmed prøvet at forklare dig en del
off-line i private mail.
Jeg har vist aldrig sagt at det er "ISO C++ Standard Library reference
implementeringen" (hint: den findes ikke), der følger med Borland C++
compileren. Det er i øvrigt RogueWave, der har skrevet den.
Jeg har vist aldrig sagt at Borland C++ er _den_ mest compliant compiler der
findes på denne planet. Det er nok nærmere EDG frontenden, som dog heller
ikke er fuldstændig compliant.
Jeg har vist aldrig skamrost Borlands dokumentation, selv der ikke er
_meget_ at kritisere på dette punkt. Generelt er det bedre at have gode
bøger - f.eks. Matt Austerns bog på dette punkt.
Jeg har henvist til en undersøgelse af en række compilere som Herb Sutter
var hovedmanden bag (jeg kan da også nævne at jeg talte face-to-face med
Herb Sutter om test-suiter og hvordan man tester compilere _inden_ han gik i
gang med undersøgelen).
Jeg har sagt at ofte (men ikke altid) er Borland C++Builder V5 (og dermed
også V5.5 af deres kommandolinie compiler) en del mere compliant end
Microsoft V6.0. Det står jeg gerne ved. Det er den gængse opfattelse, men
ikke præcist det som Herb Sutters undersøgelse viser i sin oversigt.
Jeg kan som eksempel nævne at jeg compilerede for nyligt _al_ sourcekoden
fra Andrew Koenig og Barbara Moo's bog "Accelerated C++" med Borland
C++Buiilder V5.0.
Resultatet var at Borland compileren fandt 2 fejl i koden. En manglende over
holdelse af ANSI C++ standarden ved oversættelse, og en fejl som CodeGuard
fandt på runtime. Disse fejl er rettet i koden der kan downloades og vil
komme med i næste oplag af bogen.
Se:
http://www.acceleratedcpp.com/details/errata.html
Status på source koden til "Accelerated C++" er:
96 "ifdef" for at håndtere Microsoft Visual C++ V6 fejl
13 "ifdef" for at håndtere GNU (V??) fejl
1 "ifdef" for at håndtere for at håndtere Borland C++Builder V5.0 fejl
men det skrev jeg allerede til dig i en privat mail lørdag den 21. april.
Nå, men tilbage til "distance" og dokumentationen til Borland C++Builder
V5.0
I C++ Standarden er distance defineret som
template<class InputIterator>
typename iterator_traits<InputIterator>::difference_type
distance(InputIterator first, InputIterator last);
Kig øverst på den side der beskrive "distance" i Borland hjælpefilen, så vil
du se at der står
template <class ForwardIterator>
iterator_traits<ForwardIterator>::difference_type
distance (ForwardIterator first,
ForwardIterator last);
der står også følgende form:
template <class ForwardIterator, class Distance>
void distance (ForwardIterator first,
ForwardIterator last,
Distance& n);
som er den oprindelige STL implementering. Det var lavet sådan på grund af
specifikationen og implementeringen af templates på daværende tidspunkt -
partial template specialisation.
Kan du huske at jeg sagde at STL _ikke_ er en del af ISO C++ Standard
library, selv om man ofte siger det. Dette er et eksempel på hvordan de
adskiller sig fra hinaden.
Hvis du kigger i dokumentationen til Visual C++ V6.0 står der:
template<class Init, class Dist>
ptrdiff_t distance(InIt first, InIt last);
og de har i øvrigt også stort set den oprindelige STL implementering
template<class InIt, class Dist>
void _Distance(InIt first, InIt last, Dist& n0);
Det at give flere funktioner, end hvad der er beskrevet i ISO C++
Standarden, med sin compiler er _ikke_ non-compliant.
Ovenstående eksempel viser også at i det konkrete eksempel er RogueWaves
(Borland) erklæring af distance _lidt_ mere compliant en Dinkum (Microsoft)
erklæringen. Så det bekræfter for så vidt blot hvad jeg tidligere har nævnt.
>
> > ivr, som prøver samtidig å høre BS snakke om framtiden til C++.
>
> Jeg forstår desværre ikke hvad du mener med ovenstående.
Der ligger et foredrag som MP3 file på TechNetCast.
Desuden vil du på comp.std.c++ og comp.lang.c++.moderated kunne se et indlæg
skrevet af Francis Glassborow, som han skrevn mens Bjarne Stroustrup holdt
et foredrag til ISO Standardiserings komitteen tirsdag aften i
Charlottenlund, om hvilke retninger C++ kunne udvikle sig i fremtiden.
Efterfølgende var der debat med alle "spidserne" i C++ verdenen.
Under foredraget sad _jeg_ umiddelbart ved siden af Francis Glassborow og så
hvad han skrev til nyhedsgrupperne.
På den min venstre side sad alle folkene fra EDG compileren, som jeg lige
nåede at snakke lidt med, fordi vi anvender deres front-end på mit arbejde.
Venlig hilsen
Mogens Hansen