有没有一种方法可以根据其中一个模板参数是 size_t
还是指向数据成员的指针来专门化模板类?
例如:
template<typename container_t, size_t offset>
struct SomeClass
{
// Some implementation
static void foo() {}
};
template<typename container_t, int container_t::*member>
struct SomeClass
{
// Another implementation
static void foo() {}
};
SomeClass<MyClass, 123>::foo();
SomeClass<MyClass, &MyClass::someMember>::foo();
最佳答案
在 C++17 中,是 auto
,
template<typename C, auto>
struct SomeClass;
template<typename C, size_t N>
struct SomeClass<C, N>
{
// Some implementation
static void foo() {}
};
template<typename C, int C::*member>
struct SomeClass<C, member>
{
// Another implementation
static void foo() {}
};
之前,您必须添加额外的参数。
template<typename C, typename T, T value>
struct SomeClass;
关于c++ - 可以采用 size_t 参数或指向成员的指针的模板类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48390206/