如何获取整数模板参数的值?

NoS*_*tAl 0 c++ templates

标题可能会令人困惑,但我可以说我有一个模板:

template <typename T, size_t offset>
struct offsetedIdxArray
{
//...
}
Run Code Online (Sandbox Code Playgroud)

在我创建一个实例后:

static const size_t offset(1701);
offsetedIdxArray<zmq::socket_t, offset> oia;
Run Code Online (Sandbox Code Playgroud)

有没有办法从中获取偏移变量oia.我知道我可以使用偏移但是从代码风格的角度来看,oia如果可能的话,我更愿意从中获取它.

编辑:我正在寻找一种方法来获得偏移没有辅助变量在结构内...

jua*_*nza 5

如果要在offsetedIdxArray<T,N>不向类模板添加任何成员的情况下从对象获取信息,可以使用模板函数:

#include <iostream>
#include <cstddef>

template <typename T, size_t offset>
struct offsetedIdxArray
{
};

template <typename T, size_t offset>
size_t getOffset(const offsetedIdxArray<T, offset>&) {
  return offset;
}

int main()
{
   offsetedIdxArray<int,5> oia;
   std::cout << getOffset(oia) << "\n";

}
Run Code Online (Sandbox Code Playgroud)

否则,您可以添加静态常量或枚举数据成员,如其他帖子中所建议的那样.