例えば

template<typename value_type>
value_type TypeAdjast(const (void*)& value) {
 return boost::lexical_cast<value_type>(value);
}

int a = 100;
string s;
s = TypeAdjast(a);

みたいにして、関数の返値が格納される先(左辺値)の型に応じて
返す型を変える関数って作れるものなんでしょうか?