我现在有一个班
template <typename T, typename Context>
class Foo {
T value;
Context context;
}
字符串
令人沮丧的是,T
的值完全决定了Context
的值,因此第二项相当多余。在类似的情况下,我向类中添加了一个Context
类型,然后将函数编写为
template <typename T>
class Foo {
T value;
T::Context context;
}
型
不幸的是,我不能在这里做同样的事情,因为90%的foo调用都是在int
和double
上,我不能修改类型。
有没有可能写一个类型级别的函数,它接受我的初始类型并返回相关类型。我在想象一些东西。
template <typename T> typename FooContext;
using FooContext<int> = std::string;
using FooContext<NodeValue> = NodeValue::Context;
template <typename T>
class Foo {
T value;
FooContext<T> context;
}
型
作为一个额外的挑战,我们的项目是在C17上,所以不需要C20概念的答案将被优先考虑。
1条答案
按热度按时间zbq4xfa01#
不直接使用alias,而是使用常规类,这是可能的:
字符串