将 std::forward 与 typeid 运算符一起使用是否有意义
Does it make sense to use std::forward with the typeid operator?
我想知道在向typeid
提交实例时使用std::forward<>
是否有意义?
template <typename T>
void foo(T&& value) {
std::cout << typeid(std::forward<T>(value)).name() << std::endl;
}
相反,调用typeid(value)
会产生相同的结果吗?
From [expr.typeid]/3:
当
typeid
应用于多态类类型的 glvalue 以外的表达式时,结果将引用表示表达式的静态类型的std::type_info
对象。
在C++标准中,"表达式的类型"从来都不是引用类型;表达式的"引用性"(左值或右值引用)表示在其值类别中。由于std::forward
不会修改表达式的类型,只会修改其值类别(例如从左值到右值),因此应用std::forward
不会影响typeid
的结果。
不,它没有。无论哪种方式,结果都是一样的。
相关文章:
- GoogleMock是否仍然打算与任何测试框架一起使用?
- 将 std::map::emplace 与返回 shared_ptr 的函数一起使用是否正确?
- 是否可以将 Clang-Tidy 与 QNX 一起使用?
- 是否可以将 std::basic_ifstream 和 std::basic_ofstream 与自定义缓冲区一起使用?
- 您是否必须随项目一起交付原型文件?
- 将 std::transform 与 std::back_inserter 一起使用是否有效?
- 是否已经有一个 constexpr std::bit_cast 与 g++ 一起使用
- 是否可以将存储在dword中的十六进制与getasynckeystate一起使用
- 是否可以将CRTP与本身已模板化的派生类一起使用
- 是否可以检索与柯南包管理器一起打包的库的源代码,以便在其中进行调试?
- 我是否需要将 ref 与 make_pair 一起使用才能返回引用?
- 将分配的内存与基本数据类型一起使用时,是否需要新放置? std::complex?
- 是否可以将引用类型别名与指针运算符一起使用来声明对指针的引用?
- iOS SDK 是否可以与动态库一起交付
- 是否可以在C++中将两个函数一起添加
- 是否可以与Gurobi一起使用C 中的元组
- 类模板参数扣除是否可与STD :: MAP一起使用
- 是否可以将SDL2与智能指针一起使用
- 是否可以重载模板函数以与 std::vector 的元素一起使用
- 测试 std::p ointer_traits 是否可以与我的类型一起使用