【发布时间】:2020-05-27 12:17:15
【问题描述】:
我正在尝试创建一个包含枚举字符串对的模板类,但无法进行类型推断。使用以下代码我有两个问题:
namespace {
template<typename T, size_t S>
using EnumStringArray = std::array<std::pair<T, const char*>, S>;
}
template<typename T, size_t S>
class EnumToString {
public:
constexpr EnumToString(const EnumStringArray<T, S>& array) :
_array(array)
{}
private:
EnumStringArray<T, S> _array;
};
template<typename T, size_t S>
EnumToString(const EnumStringArray<T, S>&) -> EnumToString<T, S>;
enum MyEnum {
One,
Two
};
constexpr EnumToString enumStrings = {{{ //<---- does not compile without explicit types
{One, "One"},
{Two, "Two"}
}}};
- 为什么编译器不能在构造函数中自己推导出 EnumToString 的参数?
- 为什么用户扣除指南没有帮助?
【问题讨论】: