我想知道如何在一个类中初始化一个数组,其值可以在常量表达式中使用。这是我的问题的解释:
// The goal : initializing an array for a class
// whose values can be used as normal static const
// (as template parameters for example)
class MyClass
{
public:
static const unsigned int value = 42; // <- No problem here
static const unsigned int array[3] = {100, 101, 102}; // <- How to initialize this static const array (with constexpr or metaprogrammation maybe ?)
template<unsigned int T> inline void f() {std::cout<<"Hello, my value is "<<T<<std::endl;} // <- Simple function for demonstration purposes
inline void fvalue() {f<value>();} // <- No problem here
inline void farray() {f<array[1]>();} // <- Big problem here
};
//const unsigned int Class1::array[3] = {100, 101, 102}; // <- If I do this, I will initialize the array but farray() will not compile
在 C++ 2011 中有什么方法可以做到这一点吗?(可能使用 constexpr 或元编程?)
非常感谢 !
编辑:正如标题指定的那样,我需要array
成为该类的成员(不是全局数组)。