On Sun, 14 Apr 2013 11:47:47 -0400, Timon Gehr <timon.g...@gmx.ch> wrote:
On 04/13/2013 01:00 AM, bearophile wrote:
This is one of the few C++14 core language proposals that seem
interesting for D:
http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3602.html
The purpose of this idea is to avoid the helper functions that are
currently used in D to build template structs/classes. Even if this
feature is restricted to only a subset of all the templated
structs/classes it seems useful to avoid some boilerplate code.
Is this idea adaptable to D?
Bye,
bearophile
I think the differences to be accounted for are basically that D has
n-ary default constructors, static opCall, and static if. Furthermore,
with IFTI, it is possible to only specify the prefix of the template
arguments.
---
struct S(T...){
T data;
}
S(1,2,3); // ?
Should work. The implicit default constructor should be treated as a
function.
S!double(1,2,3); // ?
Should work with T == {double, int, int}
---
struct S(T...){
T data;
static if(T.length){
this(T x){ }
}
}
S(1,2,3); // ?
I think this should follow IFTI rules. If this is allowed:
template foo(T...) {
static if(T.length)
void foo(T x) {}
}
Then the struct should be allowed as well.
---
struct S(T...){
static opCall(T)(T args){ }
}
S(1,2,3); // ?
I would say it should work.
-Steve