Thread overview | |||||||||
---|---|---|---|---|---|---|---|---|---|
|
October 10, 2001 Explicit Template Specification | ||||
---|---|---|---|---|
| ||||
I have some code which I have used for some time with Symantec and now DM C++. This code has template classes with frien operators such as template <class T> class Complex { ...... public: friend ostream & operator<< (ostream&, const Complex<T>&); }; When I moved this code to gcc I found that the definition had to be changed to template <class T> class Complex { ...... public: friend ostream & operator<< <> (ostream&, const Complex<T>&); }; for the function a template friend. This change is a consequence (as I understand it) of "Explicit Template Specification". It makes code which used to work not work. How is this going to be handled in the development of DM? At the moment I have in my code things like this: friend ostream & operator<< TT (ostream&, const Complex<T>&); where TT has to be given an appropriate define. Cheers John |
October 10, 2001 Re: Explicit Template Specification | ||||
---|---|---|---|---|
| ||||
Posted in reply to John Fletcher | Does it no longer work with DMC? John Fletcher wrote in message <3BC45E1C.D684997A@aston.ac.uk>... >I have some code which I have used for some time with Symantec and now DM C++. This code has template classes with frien operators such as > >template <class T> >class Complex >{ >...... > public: > friend ostream & operator<< (ostream&, const Complex<T>&); >}; > >When I moved this code to gcc I found that the definition had to be changed to > >template <class T> >class Complex >{ >...... > public: > friend ostream & operator<< <> (ostream&, const Complex<T>&); > >}; > >for the function a template friend. This change is a consequence (as I understand it) of "Explicit Template Specification". It makes code which used to work not work. > >How is this going to be handled in the development of DM? > >At the moment I have in my code things like this: > >friend ostream & operator<< TT (ostream&, const Complex<T>&); > >where TT has to be given an appropriate define. > >Cheers > >John > > > |
October 11, 2001 Re: Explicit Template Specification | ||||
---|---|---|---|---|
| ||||
Posted in reply to Walter |
Walter wrote:
> Does it no longer work with DMC?
>
> >
> >How is this going to be handled in the development of DM?
> >
> >At the moment I have in my code things like this:
> >
> >friend ostream & operator<< TT (ostream&, const Complex<T>&);
> >
> >where TT has to be given an appropriate define.
> >
>
At the moment I define TT as empty for DMC and that works.
My question is, will it change?
Also, the latest version of DM 8.1f does break some STL code with map and set which previously worked.
John
|
October 11, 2001 Re: Explicit Template Specification | ||||
---|---|---|---|---|
| ||||
Posted in reply to John Fletcher | John Fletcher wrote in message <3BC55E8F.52955430@aston.ac.uk>... >My question is, will it change? Over time, I intend to bring it into full conformance with C++ 98. I don't know at the moment if that means yes or no to your question <g>. >Also, the latest version of DM 8.1f does break some STL code with map and set >which previously worked. Try #defining the ARROW workaround in stl_config.h. |
October 11, 2001 Re: Explicit Template Specification | ||||
---|---|---|---|---|
| ||||
Posted in reply to Walter | Walter wrote: > John Fletcher wrote in message <3BC55E8F.52955430@aston.ac.uk>... > >My question is, will it change? > > Over time, I intend to bring it into full conformance with C++ 98. I don't know at the moment if that means yes or no to your question <g>. O.K. I think that conformance will force you to make that change at some point. I have found in the stl_config.h a define called __STL_EXPLICIT_FUNCTION_TMPL_ARGS which if set does this: #define __STL_NULL_TMPL_ARGS <> and otherwise defines it empty. This is just the behaviour I am discussing. A quick look at other compilers shows that GCC started to define it at 2.8 and Boland switched to define it as well. > > > >Also, the latest version of DM 8.1f does break some STL code with map and > set > >which previously worked. > > Try #defining the ARROW workaround in stl_config.h. Got it. That fixes it so that my examples run. Thanks John |
October 11, 2001 Re: Explicit Template Specification | ||||
---|---|---|---|---|
| ||||
Posted in reply to John Fletcher | John Fletcher wrote in message <3BC5813B.ED894AC0@aston.ac.uk>... >Got it. That fixes it so that my examples run. What kind of examples do you have? Are they in a form that can be incorporated into my test suite (!) and are also freely redistributable so I can legally do it? One of my problems implementing STL is a lack of self-contained test code. |
October 11, 2001 Re: Explicit Template Specification | ||||
---|---|---|---|---|
| ||||
Posted in reply to Walter | In the SGI-STL.tar.gz is a directory SC with about 18 test programs... I do not know if you got those already?!
Jan
Walter wrote:
> John Fletcher wrote in message <3BC5813B.ED894AC0@aston.ac.uk>...
> >Got it. That fixes it so that my examples run.
>
> What kind of examples do you have? Are they in a form that can be incorporated into my test suite (!) and are also freely redistributable so I can legally do it? One of my problems implementing STL is a lack of self-contained test code.
|
Copyright © 1999-2021 by the D Language Foundation