gpt4 book ai didi

c++ - 模板转换运算符返回对数组的引用

转载 作者:行者123 更新时间:2023-11-30 02:35:04 25 4
gpt4 key购买 nike

我正在阅读这个问题和其他一些东西:Are there cases where a typedef is absolutely necessary?

我写了这段代码:

const int arrayOfInt[10] = {0};

template<typename T, int N> using X = const T (&)[N];

struct foo
{
template<typename T, int N> operator X<int,10> () { return arrayOfInt; }
};

void bar(const int (&) [10]) {}

int main()
{
bar(foo());
return 0;
}

using c++11 的功能对我不起作用,而且我也无法考虑如何 typedef 在这种情况下自从我的课以来的返回类型foo 本身不是模板。我需要查看使用 using 关键字和 typedef both 的解决方案。非常感谢 SO 的人们 :)

最佳答案

由于 X 是一个别名模板,您需要显式提供模板参数;他们不会从周围的范围内被捕获:

struct foo
{
template<typename T, int N>
operator X<T,N>() { return arrayOfInt; }
// ^^^^^
};

你不能用 typedef 来做到这一点,因为没有 typedef 模板这样的东西。

关于c++ - 模板转换运算符返回对数组的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34039828/

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