我有以下功能:
template<typename T>
void f(const T& val) {
using value_type = T;
using sub_type = typename value_type::sub_type;
//etc...
}
但是,我遇到的问题是编译器告诉我 T 实际上不是它的任何类型,而是对它的引用。这怎么可能,在什么情况下 const 引用的模板参数本身引用?
请注意,我可以通过以下方式解决上述问题:
using value_type = std::remove_reference_t<T>;
但我想了解 T 本身在什么情况下可以作为参考。