gpt4 book ai didi

c++ - 嵌套类型作为函数参数

转载 作者:行者123 更新时间:2023-11-28 08:28:39 26 4
gpt4 key购买 nike

我有以下模板类:


template<class T>
class C
{
typedef C_traits<T> traits;
typedef typename traits::some_type type;
//...
// use 'traits' and 'type' a lot
//...
};

其中 C_traits 是一个模板结构,它具有 some_type 的类型定义,对于类型 X 的每个特化都是不同的。我正在尝试编写一个函数,该函数接收对上面定义的 type 变量的引用,即:


template<class T>
//void f(const C_traits<T>::some_type& c) <-- this does not work either
void f(const C<T>::type& c)
{
//...
}

我在定义 f 的行上收到“expected unqualified-id before '&' token”错误。我想我明白为什么会出现此错误,但我想知道是否有任何方法可以完成我在这里尝试做的事情。

换句话说,我想做这样的事情:


template<class T>
void f(typename const C<T>::type& c)
{
//...
}

这是不允许的。有什么想法吗?

最佳答案

template <typename T> 
void f(const typename C<T>::type& c) { }

这是允许的,但限定类型是非推导上下文之一。也就是说,模板参数推导对此不起作用,因此您必须像这样调用该函数:

f(42);      // won't work
f<int>(42); // works

如果您不想显式提供类型参数,一种选择是让函数只接受 T:

template <typename T> void f(const typename T& c) { }

关于c++ - 嵌套类型作为函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3098347/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com