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: 
Lvalues represent objects and rvalues represent values (loosely speaking). Binding an rvalue to a non-`const` lvalue reference would allow you to modify the *value* - what exactly does that mean? If you had written `a = 3` in your function, you'd be attempting to modify the value `2` to make it `3`. That just doesn't make sense conceptually. However, `const` lvalue references do not allow modification and only allow you to observe a value, which does make sense.

However, there often are object behind rvalue expressions and it can be useful to modify those objects (such as to steal its resources). This is precisely why the rvalue reference was introduced.
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.