Следующее выглядит как ошибка компиляции:
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;
}
В С++ допустимо ли для неназванных структур наследовать? Есть ли примеры, когда это доступно?
[1] Отказ от ответственности: я не притворяюсь, что приведенный пример полезен. Я редко использую неназванные структуры, и когда я это делаю, они обычно объединяют некоторые встроенные переменные-члены, чтобы обеспечить более чистый интерфейс для класса. Вопрос возник из-за того, что memberspaces не нужно называть структуры