Visual C++


See no one has a Visual C++ version.

a) there are so many other working versions.
b) Windoze is rapidly becoming irrelevant for number crunching scientific software
c) Matlab, Python, Scilab, Octave all work with Windows binaries.
d) Ubunto has been ordered as tired of Windoze.

but what the heck will have a go at Visual C++.

But windoze Visual C++ has a problem with understanding the word “Descriptor” that seems to be used for everything.

So if someone can help get this rolling by describing how the word “Descriptor” is intended to fit into the C++ programming scheme of things?
Are there any precompiler directives like “COMPILE_2D” that need to be set?


Background. Not essential but shows just how many ways Descriptor it understood by VC++ in its world and can’t resolve it…
// According to the good book - the help files
// Typedef names share the name space with ordinary identifiers. Therefore, a program can have a typedef name and a local-scope identifier by the same name.
// clue may be class names are not local scope identifier in VC++

// #define identifier token-string

// typedef type-declaration synonym;
// descriptors::D2Q5DescriptorBase
// Descriptor

//Going to get an error here
//1>NameClash.cpp(99): error C2244: ‘Dynamics<T,Descriptor>::collideExternal’ : unable to match function definition to an existing declaration
//1> NameClash.cpp(86) : see declaration of ‘Dynamics<T,Descriptor>::collideExternal’
// the problem is VC++ will not resolve the “Descriptor” and this has to be just a probable niggly but subtle syntax problem.

// this software has tons of these “Descriptors”
// to name just a few - this is how VC++ sees the world of “Descriptor” as many “classes” and as many typedef “synonyms”.
// VC++ also sees Descriptor as a class without template Descriptor::t[1], and as a class with template Descriptor::d
// Too many uses of the word “Descriptor”. Convoluted proccess.

//typedef descriptors::D2Q5DescriptorBase plb::advectionDiffusionDynamicsTemplatesImpl<T, descriptors::D2Q5DescriptorBase>::Descriptor
//typedef descriptors::D3Q7DescriptorBase plb::advectionDiffusionMomentTemplatesImpl<T, descriptors::D3Q7DescriptorBase>::Descriptor
//typedef descriptors::D2Q5DescriptorBase Descriptor;
//typedef descriptors::D3Q7DescriptorBase Descriptor;
//f[1] = Descriptor::t[1] * (rhoBar - Descriptor::invCs2*jAdvDiff[0]);
//D2Q9Constants is a templated struct of type T that has ::d, and has ::c[][]
//D2Q9DescriptorBase is a templated struct of type T that uses a synonym “BaseDescriptor” for “D2Q9DescriptorBase”
// Also what is a Descriptor::d as feed into the expression "Array<T, Descriptor::d> const&