gpt4 book ai didi

c++ - use-defined 转换为数组引用

转载 作者:行者123 更新时间:2023-11-28 00:12:14 25 4
gpt4 key购买 nike

template <typename T>
struct id
{
typedef T type;
};

class S{
public:

template<typename T, int N>
operator typename id<T(&)[N]>::type ();

};

void f(int(&)[20]) {}
void g(S s) { cout << typeid(f(s)).name(); }

gcc编译总是报错:错误:从类型“S”的表达式中对类型“int (&)[20]”的引用的初始化无效

为什么失败了?

最佳答案

typename id<T(&)[N]>::type , TN处于非推导上下文中。改用别名模板:

template <typename T>
using id = T;

class S{
public:
template<typename T, int N>
operator id<T(&)[N]> ();
};

关于c++ - use-defined 转换为数组引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32413786/

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