const reference can bind a rvalue reference.

```
const string& value(obj.as<string>());
```

is well-formed C++ code. but 

```
string& value(obj.as<string>());
```

is ill-formed.

but I'll change this line to be lvalue.