Followups to #320630.
--j
--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]
* Goswin von Brederlow:
> The proper use of this construct seems to be:
>
> template
> struct Foo {
> static const unsigned N = T::N;
> char bar[N];
> };
>
> struct Bla {
> static const unsigned N;
> };
>
> const unsigned Bla::N = 10;
>
> int main() {
> Foo foo;
> }
This program is ill-f
Florian Weimer <[EMAIL PROTECTED]> writes:
> * Goswin von Brederlow:
>
>>> This was once desirable because you couldn't declare real constants in
>>> classes. Today,
>>>
>>> template
>>> struct Foo
>>> {
>>> static const unsigned N = T::N;
>>> char bar[N];
>>> };
>>>
>>> works an
On Fri, 29 Jul 2005, Florian Weimer wrote:
> * Jaakko Niemi:
>
> > So, if I'm understanding this and the discussion
> > that followed correctly, we should change the
> > enum to constants.
>
> Eh, no, sorry. This will almost certainly break things because this
> is a C header, not C++.
Sorr
* Jaakko Niemi:
> So, if I'm understanding this and the discussion
> that followed correctly, we should change the
> enum to constants.
Eh, no, sorry. This will almost certainly break things because this
is a C header, not C++.
Just use #defines, as suggested by Brian M. Carlson in
<[EMAIL P
On Fri, 29 Jul 2005, Florian Weimer wrote:
> This was once desirable because you couldn't declare real constants in
> classes. Today,
>
> template
> struct Foo
> {
> static const unsigned N = T::N;
> char bar[N];
> };
>
> works and the enum trick lost its importance.
So, if I'
On 20050729T17+0200, Florian Weimer wrote:
> > The problem is, your trick doesn't work outside templates,
>
> Huh?
[After testing it:] I'll be damned. I was sure I was right :)
--
Antti-Juhani Kaijanaho, Debian developer
http://kaijanaho.info/antti-juhani/blog/en/debian
signature.asc
* Olaf van der Spek:
>> Only if the compiler knows all uses of that constant. With dynamic
>> linking, you can't know that very easily.
>
> I thought you meant optimizing code that accesses it for performance.
> I don't think the space optimization is important.
The space optimization is crucia
On 7/29/05, Antti-Juhani Kaijanaho <[EMAIL PROTECTED]> wrote:
> On 20050729T16+0200, Olaf van der Spek wrote:
> > On 7/29/05, Goswin von Brederlow <[EMAIL PROTECTED]> wrote:
> > > Florian Weimer <[EMAIL PROTECTED]> writes:
> > > Doesn't that still make N a real variable in memory and does not g
* Thiemo Seufer:
>> With dynamic linking, you can't know that very easily.
>
> The compiler knows nothing about dynamic linking, since this is outside
> the compilation unit.
Indeed, and the fact that you can use such a constant as a template
argument just stresses that it's a compile-time thing.
Antti-Juhani Kaijanaho wrote:
> On 20050729T16+0200, Olaf van der Spek wrote:
> > On 7/29/05, Goswin von Brederlow <[EMAIL PROTECTED]> wrote:
> > > Florian Weimer <[EMAIL PROTECTED]> writes:
> > > Doesn't that still make N a real variable in memory and does not get
> > > optimized away like enu
* Antti-Juhani Kaijanaho:
> That is not a new trick, I'm fairly sure that was legal when I first
> learned of the enum idiom.
It's illegal according to The C++ Programming Language, Second Edition
(which was published in 1991). I didn't claim the trick was new. 8-)
> The problem is, your trick
On 20050729T151821+0200, Florian Weimer wrote:
> Today,
>
> template
> struct Foo
> {
> static const unsigned N = T::N;
> char bar[N];
> };
>
> works and the enum trick lost its importance.
That is not a new trick, I'm fairly sure that was legal when I first
learned of the enum
* Goswin von Brederlow:
>> This was once desirable because you couldn't declare real constants in
>> classes. Today,
>>
>> template
>> struct Foo
>> {
>> static const unsigned N = T::N;
>> char bar[N];
>> };
>>
>> works and the enum trick lost its importance.
>
> Doesn't that sti
On 20050729T16+0200, Olaf van der Spek wrote:
> On 7/29/05, Goswin von Brederlow <[EMAIL PROTECTED]> wrote:
> > Florian Weimer <[EMAIL PROTECTED]> writes:
> > Doesn't that still make N a real variable in memory and does not get
> > optimized away like enums?
>
> I think it's (only) required to
On 7/29/05, Goswin von Brederlow <[EMAIL PROTECTED]> wrote:
> Florian Weimer <[EMAIL PROTECTED]> writes:
> Doesn't that still make N a real variable in memory and does not get
> optimized away like enums?
I think it's (only) required to have an address.
I don't see why the compiler can't optimize
Florian Weimer <[EMAIL PROTECTED]> writes:
> * Antti-Juhani Kaijanaho:
>
>> The anon enumeration trick has been an established C++ idom for years
>> (ISTR, but cannot check now, even Stroustrup himself advocating it).
>
> This was once desirable because you couldn't declare real constants in
> cla
* Antti-Juhani Kaijanaho:
> The anon enumeration trick has been an established C++ idom for years
> (ISTR, but cannot check now, even Stroustrup himself advocating it).
This was once desirable because you couldn't declare real constants in
classes. Today,
template
struct Foo
{
static
Antti-Juhani Kaijanaho <[EMAIL PROTECTED]> writes:
> On 20050729T083332+, Brian M. Carlson wrote:
>> Of course, I could be persuaded that the enumeration is a good idea, but
>> I don't see what problem it solves, and it only seems to cause them.
>
> The anon enumeration trick has been an estab
On 20050729T083332+, Brian M. Carlson wrote:
> Of course, I could be persuaded that the enumeration is a good idea, but
> I don't see what problem it solves, and it only seems to cause them.
The anon enumeration trick has been an established C++ idom for years
(ISTR, but cannot check now, even
On Fri, 29 Jul 2005, Petri Latvala wrote:
> One option would be to make wrap take an int always, if that's
> feasible. Or long. Or unsigned versions of those.
sfs upstream might want to do that for portability.
I'm wondering what are the consequences of making
that enum named.. can anyone see w
On Fri, 2005-07-29 at 10:55 +0300, Jaakko Niemi wrote:
> Hello,
>
> /usr/include/sys/socket.h has this:
>
> -
> /* The following constants should be used for the second parameter of
>`shutdown'. */
> enum
> {
> SHUT_RD = 0, /* No more receptions. */
> #define SHUT_R
On Fri, Jul 29, 2005 at 10:55:36AM +0300, Jaakko Niemi wrote:
> Hello,
>
> /usr/include/sys/socket.h has this:
[anonymous enum def]
> rexchan.C:254: error: no matching function for call to 'wrap(unixfd*
> const, void (unixfd::*)(int, int), )'
>
> rexchan.C:254 is:
>
> paios_out->setwcb (w
23 matches
Mail list logo