通常在编写模板代码时,我发现自己需要将模板类型的实例存储在成员变量中。例如,我可能需要缓存一个值以供以后使用。我希望能够将我的代码编写为:
struct Foo
{
template<typename T>
T member;
template<typename T>
void setMember(T value)
{
member<T> = value;
}
template<typename T>
T getMember()
{
return member<T>;
}
};
成员在使用时是专门的。我的问题:
- 当前的 C++ 生成编码工具是否可以使用这种模板化成员变量?
- 如果没有,是否有任何关于这种语言功能的建议?
- 如果没有,是否有任何技术原因导致这样的事情是不可能的?
很明显,我不想列出所有可能的类型(例如在 a 中std::variant
),因为这不是生成式编程,并且如果库的用户与作者不同,则不可能。
编辑:我认为这在某种程度上回答了我上面的第三个问题。原因是今天的编译器无法将对象的实例化推迟到整个程序被解析之后: https ://stackoverflow.com/a/27709454/3847255