gpt4 book ai didi

c++ - 将 C++11 枚举类作为模板传递,同时自动推导其类型

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:45:52 25 4
gpt4 key购买 nike

这个最小的例子在没有警告的情况下编译并运行:

// library
template<class T, T t> struct library_struct {};

// user
enum class my_enum { x, y, z };
int main()
{
library_struct<my_enum, my_enum::x> unused; // l.7
(void) unused;
return 0;
}

现在,我希望编译器从枚举模板参数 my_enum::x 中推导出类型模板参数 my_enum。这看起来会好得多:

library_struct<my_enum::x> unused;

我见过编译器能够推导出模板参数的例子,但我只被允许省略模板参数列表中的最后一个模板参数。那么这里是否可以省略枚举类型呢?

编辑:我对没有宏的解决方案很感兴趣。

最佳答案

有 3 种方法,但都不好。

首先,您可以等待以后的标准:已经提出了许多解决此问题的建议。我不知道是否有任何东西进入了 C++1y。

第二,宏。

第三,使用推导类型。这会强制枚举值充其量只是一个 constexpr 参数。

更简短的回答是“你不能按照你的要求去做,至少不能干净利落地”。困惑已被注意到,并可能有一天被修复。

关于c++ - 将 C++11 枚举类作为模板传递,同时自动推导其类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22111552/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com