News for hackers. Stuff that matters.
Re:Increasing performance with static polymorphism (and othe... by srean on Monday March 31, 2014 @03:31PM (#7503577)
scopebuffer seems so useful, why is it hidden in internal ?

    /*
     * A destructor is not used, because that would make it not POD
     * (Plain Old Data) and it could not be placed in registers.
     *
     */
Is there a way in D to check at compile time if a type is a POD type ?

Strangely enough I had to implement something similar in C++ very recently. I went with a solution that uses alloca if the size is lower than some limit, else falls back to new. I was torn between whether to allocate an array statically or use alloca, eventually went with alloca although that is usually frowned upon. I expected this function to be called from multiple threads not all of which would need to allocate space, using an array on stack would have wasted space.

Wish C++ committee approved the proposal to have variable sized arrays like the ones C has now.

Re:Increasing performance with static polymorphism (and othe... by biotronic on Monday March 31, 2014 @04:47PM (#7504049)
> Is there a way in D to check at compile time if a type is a POD type ?

http://dlang.org/phobos/std_traits#hasElaborateDestructor

I believe this is what you're looking for. Mayhap you need to combine it with hasElaborateCopyConstructor and/or other functions in std.traits.

Re:Increasing performance with static polymorphism (and othe... by WalterBright on Monday March 31, 2014 @05:06PM (#7504175)
scopebuffer's inclusion in Phobos was controversial. Many felt that its unusual design (such as lack of destructor), and ease of misuse, meant it shouldn't be there.
Re:Increasing performance with static polymorphism (and othe... by srean on Monday March 31, 2014 @05:44PM (#7504408)
Can't the destructor issue be mitigated by

    hasElaborateDestructor( )
that biotronic pointed me to ?

EDIT: To clarify, one could have two versions one with a destructor for non POD and the current one. The compiler dispatches to the appropriate one at compile time.

Re:Increasing performance with static polymorphism (and othe... by WalterBright on Monday March 31, 2014 @06:49PM (#7504831)
No, as that doesn't convert anything to POD.