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 `sum(2, 5)` 2 and 5 are rvalues.

An rvalue cannot bind to a non-const lvalue reference like the one in your first `sum` `int&`, you need `const T&` so later function works for both.