Question: I am getting the error when i try to build my app :

`Error executing aapt. Please check aapt is present at /home/faizal/DEV/adt-bundle-linux-x86_64-20140321/sdk/build-tools/android-4.4.2/aapt`

This started after i used the SDK Manager to delete the existing build-tools(19.0.3) and got the latest one(20). The location mentioned in the error(`...sdk/build-tools/android-4.4.2`) did infact exist, but it was removed automatically by the SDK manager when i removed the old build-tools.

Now i just see a `20.0.0` folder in `sdk/build-tools`. If i use SDK Manager to download the `19.0.3` build tools again, it creates a `19.0.3` folder, not `android-4.4.2`.

What's going on? Why is ADT looking for a non existent folder? Where is it specified?

Answer: 
Rvalues and temporaries behave like **read only** references. So binding them to a non const reference would violate this nature. Declaring a reference as `const` you are fullfilling the read only contract. 

On your particular case, the ints 23 etc are called numerals and are inherently constants (have a fixed value). In C++ modifying a constant is undefined behaviour, so your numerals only bind to const references.
In C++11 you can change it to following to make it always work, regardless what you pass it:

```
int sum (int &&a, int &&b)
{
    return(a + b);
}

```

It will give you a non-const reference to `2` and `5` (i.e. you can modify the values inside the `sum(2, 5)` call though `a` and `b`). This is safe and will not give any weird side effects, even if it had been temporary objects instead of primitives (like `string("foo")`) because the arguments to `sum()` do not have a name. That they don't have a name makes you unable to observe the modification in any way.