为什么GCC拒绝编译此代码,以及如何解决?
template<size_t ch>
class ChannelsData
{
std::array<int, ch> vals;
public:
template<size_t i>
inline int& at()
{
static_assert( i < ch );
return vals[ i ];
}
};
template<size_t c>
inline void something(ChannelsData<c>& dest)
{
dest.at<0>() = 0;
}
int main()
{
ChannelsData<1> cd;
something( cd );
return 0;
}