const boost :: array <T,N>或boost :: array <const T,N>?

pic*_*c11 5 c++ arrays const

这两者有什么区别?当您需要固定大小的常量值数组时,您更喜欢哪一个?

const boost::array<int, 2> x = {0, 1};
boost::array<const int, 2> y = {0, 1};
Run Code Online (Sandbox Code Playgroud)

谢谢.

Joh*_*itb 6

第二个将阻止您将其复制到新的非const数组

boost::array<const int, 2> y = {0, 1};
boost::array<int, 2> y1 = y; // error!
Run Code Online (Sandbox Code Playgroud)

由于我希望这可以工作,我可能会选择第一个选项.将第二个传递给期望a的模板boost::array<T, N>将阻止这些模板修改其参数(即使它是副本).第一个将"正常工作",因为参数将具有类型boost::array<int, 2>.