Why GCC refuses to compile this code, and how to fix it?
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;
}