fun with decltype keyword