相关疑难解决方法(0)

类(或结构)按模板自引用

以下是合法的吗?

template< typename T >
struct tree_node
   {
   T t;
   std::vector<tree_node> children;
   };
Run Code Online (Sandbox Code Playgroud)

这篇文章的评论似乎表明事实并非如此.


编辑:这不会打击我作为"未定义的行为"类型的场景.预期的语义是明确的.如果它是不完整类型的无效用法,那么它应该是编译时错误.

在我的测试中,这似乎工作正常(我使用了GCCClang - 两者都有-Wall -Werror -std=c++11).

语言定义中是否有某些东西(在C++ 17之前)直接或间接地将其指定为未定义的行为,或者它只是指定不足


请记住,这在结构上非常类似于以下内容:

typedef int T;
struct tree_node;

struct tree_node
   {
   T t;
   tree_node * children;
   }
Run Code Online (Sandbox Code Playgroud)

c++ class language-lawyer self-reference

10
推荐指数
1
解决办法
856
查看次数

标签 统计

c++ ×1

class ×1

language-lawyer ×1

self-reference ×1