C++ 通过引用传递时无法访问转发类型的类型别名
我的问题围绕着下面的代码:C++ 通过引用传递时无法访问转发类型的类型别名,c++,templates,C++,Templates,我的问题围绕着下面的代码: 模板 静态无效(T和容器){ typename T::value_type x; std::cout模板 静态无效(T和容器){ typename std::decation\u t::value\u type x; 对于左值,T是一个引用,foo&::value\u type不起作用 std::detacy删除引用、常量、volatile,并执行与函数原型和数组无关的操作。您必须从导出的T类型中删除引用,例如使用std::detacy\u T: typename
模板
静态无效(T和容器){
typename T::value_type x;
std::cout模板
静态无效(T和容器){
typename std::decation\u t::value\u type x;
对于左值,T
是一个引用,foo&::value\u type
不起作用
std::detacy
删除引用、常量、volatile,并执行与函数原型和数组无关的操作。您必须从导出的T
类型中删除引用,例如使用std::detacy\u T
:
typename std::decay_t<T>::value_type x;
typename std::decage\u t::value\u type x;
嗯,这很有魅力。为了以这种方式利用概念,我想我可以将template
更改为template requires ConceptName
typename std::decay_t<T>::value_type x;