【发布时间】:2021-04-12 20:55:24
【问题描述】:
我的代码:
enum class list{one, two};
template <list T> class Base;
template <> class Base <list::one>{
A a{list::one};
B b{list::one};
C c{list::one};
};
template <> class Base <list::two>{
B b{list::two};
C c{list::two};
D d{list::two};
};
但我想避免重复代码,并使用对专业化值的引用,如下所示:
template <> class Base <list::one>{
A a{T};
B b{T};
C c{T};
};
template <> class Base <list::two>{
B b{T};
C c{T};
D d{T};
};
我可以使污泥临时变量,但看起来也不好:
template <> class Base <list::one>{
list T = list::one;
A a{T};
B b{T};
C c{T};
};
有什么方法可以参考模板特化值吗?
【问题讨论】:
-
恐怕使变量是唯一的选择。只需确保将
static constexpr添加到其中,其行为方式与模板参数相同。
标签: c++ c++11 templates template-meta-programming