Corrected auto and decltype(auto) usage. Notably, correctly returns reference and value