What exactly is the difference between C and D headers?
D itself does not use headers at all. But you will need "D
headers", if you want to call a C library from D. The translation
is mostly syntatic and straight forward like:
* replace #define-constants with enums
* replace macros with (templated) functions
* replace #ifdef with static-if / version
etc...
Metaprogramming is always welcomed; makes things much easier in
the long run.
I'll probably find this out on my own eventually, but does D
support operator overloading? That would be simply amazing.
Absolutely it does. Even in a more "meta"-way than c++:
struct S
{
int x;
S opBinary(string op)(S other) // overloads + - * / % all at
once
{
return mixin("x "~op~" other.x");
}
}