有没有办法(在 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/