digitalmars.D.bugs - template instance vec!(1) vec is not a template declaration
- hellcatv hotmail.com (14/14) May 06 2004 It is critical to be able to instantiate a class with different template
- Ivan Senji (19/33) May 06 2004 single
- hellcatv hotmail.com (2/38) May 06 2004
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
<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 asinglevector) or in this case to be able to make a smaller vector from a biggerone.Doing this with static functions outside the class is painful and thesyntax isclunky (no operators, no implicit members that actually call get/setfunctions).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
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 asinglevector) or in this case to be able to make a smaller vector from a biggerone.Doing this with static functions outside the class is painful and thesyntax isclunky (no operators, no implicit members that actually call get/setfunctions).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