gpt4 book ai didi

c++ - 依赖于默认模板类型参数的非类型模板参数

转载 作者:行者123 更新时间:2023-11-30 03:15:39 24 4
gpt4 key购买 nike

有没有办法(在 C++17 中)在模板中实现类似于前向声明的东西?我想要实现的是这样的:

template<typename T, SizeType D, typename SizeType = int>

显然这里 D 依赖于 SizeType,所以它必须在它之前。但在那种情况下,我无法设置默认参数,除非 D 也有默认参数(我不想要)。基本上我希望能够在 D 之前“声明”SizeType,但在它之后“定义”它。

编辑:这是我想如何使用它的示例:

template<typename T, SizeType D, typename SizeType = int>
class StaticArray{};
//...
StaticArray<float, 5> s; // = StaticArray<float, 5, int>
StaticArray<float, (1<<40), size_t>; // 1<<40 doesn't fit in int

最佳答案

可以做这样的事情

template<typename T, auto DArg, typename SizeType = int, SizeType D = DArg>

现在首先提供D 的参数,然后是D 的类型,最后将参数转换为 D 类型正确。

关于c++ - 依赖于默认模板类型参数的非类型模板参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56884092/

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