std::identity was removed from the standards, but Visual Studio kept it as an extension. Replace it by std::remove_reference, which does just a little bit more than std::identity does, but without impact in this case.