Thread overview
Consistent design for functions, template and metaprogramming functions
Aug 19, 2003
Philippe Mori
Aug 19, 2003
Bill Cox
Aug 19, 2003
Philippe Mori
August 19, 2003
I would really like that defining a template (on class or integral type)
an ordinary (member or not) function and compile-time metaprogramming
functions all look a like.

For metaprogramming function, a keyword would tell that the function is intended for metaprogramming (or even easier would be that any function simple enough would be allowed).

Also being able to pass type, integral type constant and value (object)
to a function should look similar. In fact, I think it should even be
possible
to define a function select_first that work either with types or objects.
This
would require that types could be considered as a kind of object in certains
cases...


August 19, 2003
Philippe Mori wrote:
> I would really like that defining a template (on class or integral type)
> an ordinary (member or not) function and compile-time metaprogramming
> functions all look a like.
> 
> For metaprogramming function, a keyword would tell that the function
> is intended for metaprogramming (or even easier would be that any
> function simple enough would be allowed).
> 
> Also being able to pass type, integral type constant and value (object)
> to a function should look similar. In fact, I think it should even be
> possible
> to define a function select_first that work either with types or objects.
> This
> would require that types could be considered as a kind of object in certains
> cases...

Hi.

What would these constructs look like?  Could you give some examples?

Bill


August 19, 2003
"Bill Cox" <bill@viasic.com> a écrit dans le message de news:bhtnin$27ep$1@digitaldaemon.com...
> Philippe Mori wrote:
> > I would really like that defining a template (on class or integral type)
> > an ordinary (member or not) function and compile-time metaprogramming
> > functions all look a like.
> >
> > For metaprogramming function, a keyword would tell that the function is intended for metaprogramming (or even easier would be that any function simple enough would be allowed).
> >
> > Also being able to pass type, integral type constant and value (object)
> > to a function should look similar. In fact, I think it should even be
> > possible
> > to define a function select_first that work either with types or
objects.
> > This
> > would require that types could be considered as a kind of object in
certains
> > cases...
>
> Hi.
>
> What would these constructs look like?  Could you give some examples?
>
> Bill
>
>

In fact, since I can only find a few example were we can want both a type or an object (like select_first), then maybe the best would just to have 2 overload: one template and one metafunction.

Since I do not yet know very well the syntax, I will give an example for now:

class A;
class B;

A a1;
A a2;

A a = select_first(a1, a2);

// declaration of variable value with type A
select_first(A, B) value;

or maybe it should be more like

// Another possibility
select_first(A, B).type value;

Maybe the second way will works better with metaclass information available in classinfo...


Also if in the example above a1 and a2 would be compile-time constant,
I'd like to be able to get a constant with function like syntax and be able
to uses that contant where the compiler want such a constant (for ex.
for template with integral type argument --- I think it is not yet
supported)

Does D has something like typeof operator or another way to get the type
of an expression and uses it elsewhere (for a declaration or the return type
for ex.)