clang support
make the order of make_indices<> should be O(log n)
make make_indices<> O(log n)