【发布时间】:2017-12-11 12:45:16
【问题描述】:
我有这个代码:
template<char... Ts>
class myIDClass
{
protected:
std::vector<uint8_t> m_ID = { Ts... };
public:
std::vector<uint8_t> getID()
{
return m_ID;
}
}
我可以这样使用它:
class MyClass: myIDClass<'1','2','3','4','5','6','7','8'>
{
// some code here
}
MyClass mc;
但我想确保使用 myIDClass 的人准确输入 8 个字符作为模板参数输入到类中。编译时怎么办?
有没有我可以使用 static_asset 做到这一点?
【问题讨论】:
-
如果大小应该是编译时间常数,为什么要使用
std::vector而不是std::array? -
老式方法有什么问题:创建一个带 8 个参数的构造函数?
-
......当你不希望它是可变参数时,为什么要使用可变参数列表? ;)
-
@tobi303 如何使用数组代替向量?
-
@Bathsheba 老式的很慢,因为向量(或数组)的初始化是在运行时而不是编译时完成的。
标签: c++ compilation static-assert