Well, my definition would be irrelevant, the standard is the only authority when it comes to these things.
First off, declarations can be definitions. If you really want the details, read [basic.def]
in the C++ standard. I'll quote the highlights:
A declaration may introduce one or more names into a translation unit or redeclare names introduced by previous declarations. If so, the declaration specifies the interpretation and semantic properties of these names.
A declaration is said to be a definition of each entity that it defines.
[Example 1: the following are definitions
int a; // defines a
int f(int x) { return x+a; } // defines f and defines x
whereas these are just declarations
extern int a; // declares a
int f(int); // declares f
— end example]
Assignment is pretty straightforward [expr.ass]
:
In simple assignment (=), the object referred to by the left operand is modified by replacing its value with the result of the right operand.
If the right operand is an expression, it is implicitly converted to the cv-unqualified type of the left operand.
Initialization is much more complicated, so I'll refer you to [dcl.init]
and give some examples:
int a;
// No initializer is specified, so it is default-initialized.
// For scalar types like int, default-initialization does nothing,
// so a is uninitialized.
a = 1;
// This is ordinary assignment, not "variable creation" or "initialization"
int b = 2;
// This is copy-initialization.
int c {3};
// This is direct-initialization.
What does that mean? What literature? All variable declarations have a corresponding definition somewhere, so it doesn't make a whole lot of sense to say that declaration does not cause allocation.
"Variable creation" is not a term that I am familiar with.