C++是否有标准的编译时类型容器?

Jon*_*Mee 5 c++

(这个问题有一个Nim的答案,提到了boost :: mpl :: map.)

标准C++中是否有可以保存类型的编译时容器?

一个用法示例是:

compiler::vector foo{char, short, long, long long};

template <int N>
void bar(foo[N] param){/*do something and return foo[N]*/}
Run Code Online (Sandbox Code Playgroud)

Jon*_*Mee 0

这个构建基于B\xc3\xa9renger的答案,这让我进入了tuple概念。但我相信我们可以做得更好,甚至保留参考文献:

\n\n
tuple foo<char&, short&, long&, long long&>;\n\ntemplate <int N>\nvoid bar(tuple_element_t<N, decltype(foo)> param){}\n
Run Code Online (Sandbox Code Playgroud)\n\n

事实上如果没有计划使用foo此函数之外的内容,我们甚至可以将其声明为内联:

\n\n
template <int N>\nvoid bar(tuple_element_t<N, tuple<char&, short&, long&, long long&>> param){}\n
Run Code Online (Sandbox Code Playgroud)\n