Thread overview
Suggesting an addition to std.traits for arrays and pointers
Aug 14, 2007
Markus Dangl
Aug 14, 2007
Markus Dangl
Aug 14, 2007
Benjamin Phillips
August 14, 2007
I think these two simple templates could be added to std.traits. Afaik there is no way around defining templates for this:

/***
 * Get the referenced type of an array.
 * Example:
 * ---
 * import std.traits;
 * int[] foo;
 * ValueType!(foo) x;   // x is declared as int
 * ---
 */
template ValueType(T : T*)
{
    alias T ValueType;
}

/***
 * Get the referenced type of an pointer.
 * Example:
 * ---
 * import std.traits;
 * int* foo;
 * ValueType!(foo) x;   // x is declared as int
 * ---
 */
template ValueType(T : T[])
{
    alias T ValueType;
}
August 14, 2007
Sorry wrong newsgroup. But - since ready-to-use code is included - this might not be so totally wrong.
August 14, 2007
Markus Dangl Wrote:

> I think these two simple templates could be added to std.traits. Afaik there is no way around defining templates for this:
> 
> /***
>  * Get the referenced type of an array.
>  * Example:
>  * ---
>  * import std.traits;
>  * int[] foo;
>  * ValueType!(foo) x;   // x is declared as int
>  * ---
>  */
> template ValueType(T : T*)
> {
>     alias T ValueType;
> }
> 
> /***
>  * Get the referenced type of an pointer.
>  * Example:
>  * ---
>  * import std.traits;
>  * int* foo;
>  * ValueType!(foo) x;   // x is declared as int
>  * ---
>  */
> template ValueType(T : T[])
> {
>     alias T ValueType;
> }

I think you mixed the comments up :)