Discussions
Categories
- 385.5K All Categories
- 5.1K Data
- 2.5K Big Data Appliance
- 2.5K Data Science
- 453.4K Databases
- 223.2K General Database Discussions
- 3.8K Java and JavaScript in the Database
- 47 Multilingual Engine
- 606 MySQL Community Space
- 486 NoSQL Database
- 7.9K Oracle Database Express Edition (XE)
- 3.2K ORDS, SODA & JSON in the Database
- 585 SQLcl
- 4K SQL Developer Data Modeler
- 188K SQL & PL/SQL
- 21.5K SQL Developer
- 46 Data Integration
- 46 GoldenGate
- 298.4K Development
- 4 Application Development
- 20 Developer Projects
- 166 Programming Languages
- 295K Development Tools
- 150 DevOps
- 3.1K QA/Testing
- 646.7K Java
- 37 Java Learning Subscription
- 37.1K Database Connectivity
- 201 Java Community Process
- 108 Java 25
- 22.2K Java APIs
- 138.3K Java Development Tools
- 165.4K Java EE (Java Enterprise Edition)
- 22 Java Essentials
- 176 Java 8 Questions
- 86K Java Programming
- 82 Java Puzzle Ball
- 65.1K New To Java
- 1.7K Training / Learning / Certification
- 13.8K Java HotSpot Virtual Machine
- 94.3K Java SE
- 13.8K Java Security
- 208 Java User Groups
- 25 JavaScript - Nashorn
- Programs
- 667 LiveLabs
- 41 Workshops
- 10.3K Software
- 6.7K Berkeley DB Family
- 3.6K JHeadstart
- 6K Other Languages
- 2.3K Chinese
- 207 Deutsche Oracle Community
- 1.1K Español
- 1.9K Japanese
- 474 Portuguese
std::index_sequence limited to 255 elements

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
-
The compiler has a check on nested template depth to guard against runaway compilations when a template definition is infinitely recursive. Hitting the limit is generally friendlier than the compiler aborting when it runs out of memory.
The compiler has an undocumented "Q option" (or "Wizard option") that lets you increase the allowed depth:
-Qoption ccfe -tmpldepth=N
-W0,-tmpldepth=N
(Note W-zero, not W-oh)
The two options are equivalent.
N is an integer representing the desired maximum nesting level, where 256 is the default.