I am creating a templated object that is a storehouse for a heap object and executes their methods and returns an array of results. With the help of a template, I want to achieve this, but I want to assign the same attributes to the function. How can one pass the attributes of a function to another function?
template Group(T, int objects)
{
struct Group
{
enum __length = __traits(allMembers, T).length;
T[objects] __objects;
this(T[objects] __objctor) @safe
{
__objects = __objctor;
}
static foreach (member; __traits(allMembers, T))
{
static if ( __traits(getVisibility, __traits(getMember, T, member)) != "private" &&
__traits(getVisibility, __traits(getMember, T, member)) != "protected")
{
static if (isFunction!(__traits(getMember, T, member)))
{
mixin ("ReturnType!(__traits(getMember, T, member))[] " ~ member ~ "(Parameters!(__traits(getMember, T, member)) args)
{
ReturnType!(__traits(getMember, T, member))[] results;
foreach (e; __objects)
results ~= e." ~ member ~ "(args);
return results;
}");
}else
static if (member != "Monitor")
{
mixin ("typeof(__traits(getMember, T, member))[] " ~ member ~ "()
{
typeof(__traits(getMember, T, member))[] results;
foreach (e; __objects)
results ~= e." ~ member ~ ";
return results;
}");
}
}
}
}
}