Template recursion error on table struct
data pulverizer via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Fri Mar 25 14:54:47 PDT 2016
I am attempting to create a table struct with generic column
types using templates. The subTable() member function subsets the
table, however I am getting a template recursion error. I know
where the problem is from, I don't know how to resolve it. I am
modelling it after the matrix example in Ali Çehreli book:
http://ddili.org/ders/d.en/templates_more.html
import std.stdio;
template ColumnTable(T...){
struct ColumnTable{
private:
typeof(T) data;
string[] names;
struct Range{
size_t begin;
size_t end;
}
// This function is the source of the issue
auto subTable(Range rowRange, Range columnRange)(){
auto new_data = data[columnRange.begin .. columnRange.end];
auto output = ColumnTable!(new_data)(new_data); // This is the
problem
string[] new_names = names[columnRange.begin ..
columnRange.end];
output.setNames(new_names);
return output;
}
public:
this(T...)(T args){
data = args;
foreach(i, arg; T){
names ~= args[i].stringof;
}
}
void setNames(string[] names){
this.names = names;
}
void test(){
writeln(subTable!(Range(0, 2), Range(0, 2))());
}
}
}
void main(){
string[] names = ["tariq", "sharma", "peter", "rakel"];
double[] salary = [44.5, 32.2, 40.1, 28.1];
int[] age = [24, 20, 22, 25, 19];
writeln(ColumnTable!(names, salary, age)(names, salary, age));
}
More information about the Digitalmars-d-learn
mailing list