Skip to Main Content

DevOps, CI/CD and Automation

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Please ask technical questions in the appropriate category. Thank you!

std::index_sequence limited to 255 elements

kovalAug 6 2017 — edited Aug 7 2017

Studio 12.6 imposes a limit of 255 elements in std::index_sequence.

Trying to use more elements leads exeeds template nesting depth in the compiler.

#include <utility>

using seq = std::make_index_sequence<256>;

Error:

"developerstudio12.6/lib/compilers/CC-gcc/include/c++/5.4.0/utility", line 215: Error: Templates nested too deeply (recursively?).

"developerstudio12.6/lib/compilers/CC-gcc/include/c++/5.4.0/utility", line 215:     Where: While specializing "std::_Index_tuple<>".

"developerstudio12.6/lib/compilers/CC-gcc/include/c++/5.4.0/utility", line 215:     Where: Specialized in std::_Build_index_tuple<...>.

"developerstudio12.6/lib/compilers/CC-gcc/include/c++/5.4.0/utility", line 215:     Where: Specialized in std::_Build_index_tuple<...>.

"developerstudio12.6/lib/compilers/CC-gcc/include/c++/5.4.0/utility", line 215:     Information: 254 contexts omitted.

..... many other similar messages

Seems like the implementation is linear which makes index_sequence of little use for things like processing compile-time string constants.

I have a library which encodes strings with template<char...> and I use it for building SQL queries at compile time. The resulting strings easily get over 255 characters and the processing requires using std::index_sequence.

With Studio 12.5 I used my own implementation of make_index_sequence (12.5 does not support index_sequence even with -std=c++14) but wanted to use library version with 12.6 as it is available. Seems like it is currently of no use for similar purposes as mine.

Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Sep 4 2017
Added on Aug 6 2017
1 comment
381 views