以下内容看起来像编译错误:
struct : Base { };
然而,当使用[1]时,它似乎是有效的:
#include <iostream>
using namespace std;
template<bool B>
struct A
{
struct : std::integral_constant<bool, B> {
} members;
};
int main()
{
A<true> a;
cout << a.members.value << endl;
return 0;
}
C++中,未命名结构体可以继承吗?这样做有什么用处的例子吗?
[1] 免责声明:我并不是在假装所提供的例子有用。我很少使用未命名结构体,而且当我使用它们时,通常是将一些内置成员变量捆绑在一起,以便为类提供更清晰的接口。这个问题是从观察到memberspaces不需要命名结构体引起的。
std::tie
才是更好的方法。 - StoryTeller - Unslander Monica