None of the main compiler standard libraries currently provide sub-O (n) (logarithmic or otherwise) implementations of whole N3658 compile-time sequences.
The standard implementation of O (n), going along the chain of typedef s. This is equivalent to the FP function concatenating to the end of the list returned by the recursive call.
O (n), but with an interesting 8x expanded loop.
O (n), using recursive inheritance built on an integral constant and an integer sequence, the latter is used as a drive (in the sense of FP). (Please note that the implementation of the VS14 is actually in the title type_traits , rather than utility .)
ICC is currently not documented as providing constant ongoing support for compile time.
std::integer_sequence about the effectiveness of std::integer_sequence is probably not at this stage; any problem for which integer compilation time sequences are suitable will encounter compiler constraints (in terms of the number of function arguments and template, etc.) long before the performance of the algorithm used by a large value affects compilation time. Also think that if std::make_integer_sequence used elsewhere in your compilation (for example, in a library template), then the compiler will be able to reuse this call, since template metaprogramming is purely functional.
source share