Thread overview | |||||
---|---|---|---|---|---|
|
May 06, 2004 template instance vec!(1) vec is not a template declaration | ||||
---|---|---|---|---|
| ||||
It is critical to be able to instantiate a class with different template argumetns to be able to do a cast function (i.e. a double vector to a single vector) or in this case to be able to make a smaller vector from a bigger one. Doing this with static functions outside the class is painful and the syntax is clunky (no operators, no implicit members that actually call get/set functions). test program that fails: struct vec(int size) { float v[size]; vec!(1) first() {vec!(1) t; t.v[0]=v[0];return t;} } int main () { vec!(2) v; vec!(1) g =v.first(); } |
May 06, 2004 Re: template instance vec!(1) vec is not a template declaration | ||||
---|---|---|---|---|
| ||||
Posted in reply to hellcatv | <hellcatv@hotmail.com> wrote in message news:c7ctkt$1all$1@digitaldaemon.com... > It is critical to be able to instantiate a class with different template argumetns to be able to do a cast function (i.e. a double vector to a single > vector) or in this case to be able to make a smaller vector from a bigger one. > Doing this with static functions outside the class is painful and the syntax is > clunky (no operators, no implicit members that actually call get/set functions). > test program that fails: > > struct vec(int size) { > float v[size]; > vec!(1) first() {vec!(1) t; t.v[0]=v[0];return t;} > } > int main () { > vec!(2) v; > vec!(1) g =v.first(); > > } > There is no bug here, you missed something that isn't documented (at least i didn't find it) It should be: struct vec(int size) { float v[size]; .vec!(1) first() {.vec!(1) t; t.v[0]=v[0];return t;} } int main () { vec!(2) v; vec!(1) g =v.first(); return 1; } template vec belongs to global scope so . gives acces to global scope. |
May 06, 2004 Re: template instance vec!(1) vec is not a template declaration | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ivan Senji | D is my new favorite language :-) thanks In article <c7d1kc$1gr1$1@digitaldaemon.com>, Ivan Senji says... > ><hellcatv@hotmail.com> wrote in message news:c7ctkt$1all$1@digitaldaemon.com... >> It is critical to be able to instantiate a class with different template argumetns to be able to do a cast function (i.e. a double vector to a >single >> vector) or in this case to be able to make a smaller vector from a bigger >one. >> Doing this with static functions outside the class is painful and the >syntax is >> clunky (no operators, no implicit members that actually call get/set >functions). >> test program that fails: >> >> struct vec(int size) { >> float v[size]; >> vec!(1) first() {vec!(1) t; t.v[0]=v[0];return t;} >> } >> int main () { >> vec!(2) v; >> vec!(1) g =v.first(); >> >> } >> > > >There is no bug here, you missed something that isn't documented >(at least i didn't find it) >It should be: > >struct vec(int size) { >float v[size]; >.vec!(1) first() {.vec!(1) t; t.v[0]=v[0];return t;} >} >int main () { >vec!(2) v; >vec!(1) g =v.first(); >return 1; >} > >template vec belongs to global scope so . gives acces to global scope. > > |
Copyright © 1999-2021 by the D Language Foundation