ELI5: Explain Like I'm 5

Decltype

Okay kiddo, have you ever played with Legos? You know how you can build something very big and complicated from smaller pieces? Think of C++ code like Legos - it's made of smaller "blocks" of code that work together to create really cool things.

One of those "blocks" in C++ is called a "variable". A variable is a name that represents a value that can change. For example, if you wanted to keep track of how many cookies you have left, you could use a variable called "num_cookies" and change its value whenever you eat a cookie.

Now, sometimes we want to know the type of a variable - that is, what kind of value it can hold. For example, the variable "num_cookies" might be an integer (a whole number). We can use the "decltype" keyword in C++ to find out what the type of a variable is.

Here's an example - let's say we have these two variables:
```
int num_cookies = 5;
double price_per_cookie = 0.50;
```
If we want to know the types of these variables, we can use "decltype" like this:
```
decltype(num_cookies) num_type;
decltype(price_per_cookie) price_type;
```
What we're saying here is "create two new variables called 'num_type' and 'price_type', and make them the same type as 'num_cookies' and 'price_per_cookie', respectively".

In this case, 'num_type' will be an 'int' (because 'num_cookies' is an int variable) and 'price_type' will be a 'double' (because 'price_per_cookie' is a double variable).

So, to sum up - decltype is a keyword in C++ that allows us to find out the type of a variable. It's like asking "what kind of Lego piece is this?" so we can make sure we're using it correctly in our bigger project.