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;