BFMatcher limitation

Hello ,
Why there is limitation on number of descriptors supported in BFMatcher::knnMatchImpl?
According to code number of descriptors must be less 1 << 18 .
const int IMGIDX_SHIFT = 18;
const int IMGIDX_ONE = (1 << IMGIDX_SHIFT);

Thanks.