I am using DMD 2.062 for x86.
module testing; Private anonym test1 {one, two, three,} private enum test2 {one, two, three,} auto CT = cartesian product ([EnumMembers! Test1], [EnumMembers! Test2]); Integrate {import std.stdio; Agram (n, m; whistle) {Shelter (n, "", m); }} This program prints:
one two one three one then an access violation Error is thrown whether I am using cartesianProduct incorrectly or is this a bug in the function?
Maybe a small part of both, maybe. The point here is that an attempt is made to evaluate ct at compile time and produces the range used in run-time, I think CTF or Cartesian products expect such a scenario. Does not do anything bad that involves the use of invalid memory; I think that should is either work, or a compile-time error, but it will not help you And bug related to Tracker. Here's what the matter is, however, if you move the unit-test body or static it () to the module constructor to start ct Everything will work, what do you miss, does not support the initialization of global variables when the D program starts. The value assigned to Global is always assessed at compile-time, which often "just works", is often the result of an error in collection-time (if CTRL-enabled is not an initialization) and in this case there is strange behavior :) This code is what you want:
Auto Test 1 member = [EnumMembers! Test1]; Auto Test 2 Members = [EnumMembers! Test2]; Nickname CT = typef (cartesian product (test 1 member, test 2 member)); Whistle whistle; Stable it () {whistle = cartesian product (test 1 member, test 2member); } In general, the relation between each other in run-time data for complex-time data and complex time is very difficult as the current de-front-end implementation in the form of arrays or associative arrays. And a lot of attention is needed
No comments:
Post a Comment