使用定义相互依赖
Mutually dependant using definitions
我有一些相互依赖的模板实例。通常我只是转发声明它们,但我不明白这怎么可能。这是一个例子
#include <tuple>
#include <memory>
using Tuple = std::tuple<int,TupleContainer>;
using TupleContainer = std::unique_ptr<Tuple>;
int main()
{
return 0;
}
由于需要TupleContainer
不能先写Tuple
,因为需要Tuple
不能先写TupleContainer
。
如何转发声明其中一个使用定义?
我设法通过在 std::tuple 周围使用一个薄包装类并使用前向声明来做到这一点。
#include <tuple>
#include <memory>
struct Tuple;
using TupleContainer = std::unique_ptr<Tuple>;
struct Tuple : public std::tuple<int,TupleContainer>{
using std::tuple<int,TupleContainer>::tuple;
};
int main()
{
return 0;
}
你需要一个真正的指针,就像如果你要尝试有一个递归结构定义,它会失败,因为它无法停止。
using my_tuple = std::tuple<int, std::tuple<int>*>;
相关文章:
- 为什么即使直到最后才定义实际类型,也可以将依赖名称视为完整
- (Wix 安装程序)如何包含自定义操作依赖项
- 如何定义依赖于参数包转换的函数的返回类型
- FBString 的小字符串优化是否依赖于未定义的行为?
- 错误 LNK1104:错误消息中显示的路径未在其他依赖项中定义
- 循环依赖结构,使用前向声明时结构的错误重定义
- 使用 libpthread 在共享库中未定义的行为,但不将其作为依赖项在 ELF 中
- 如何在C++中声明/定义相互依赖的模板?
- 继承依赖类型定义而不使用结构
- g++ 生成依赖项文件缺少用户定义的标头
- 单独库中的类成员函数定义和链接依赖项
- 如何转发声明依赖于变量定义的类,而变体定义又依赖于模板化类?
- 如何打破定义嵌套模板类的标头的圆形依赖关系
- 如何定义具有依赖于符号调试的参数的函数
- Visual Studio:用户依赖定义
- 依赖GCC/LLVM的"-fexceptions"在技术上是未定义的行为吗?
- gmp 的 libgmp.so 有哪些依赖关系?我不断收到未定义的引用
- 如何从同一个头文件中定义 2 个类,而一个类依赖于另一个类
- 使用定义相互依赖
- 循环依赖(类对类型定义,类型定义对类),前向声明给出不明确的调用