В стандартной библиотеке C++ такого не существует. Как уже упоминалось в комментариях, вы все равно можете найти boost::blank
в Boost, который, вероятно, наиболее похож на класс, который вы ищете. Если бы такой класс существовал в стандартной библиотеке, я не думаю, что было бы так много сторонних библиотек, определяющих их собственные struct empty {}
.
Если вы хотите всего лишь класс без данных и минимальный размер - не может быть меньше 1 - (и, возможно, извлечь выгоду из пустой оптимизации базы), вы все равно можете использовать std::tuple<>
. Он фактически используется для этой цели (пустая оптимизация базы) в реализации некоторых классов в libstdC++.
Если вы хотите, чтобы убедиться, что std::tuple<>
действительно является пустой класс:
#include <iostream>
#include <tuple>
#include <type_traits>
int main()
{
// prints 1
std::cout << std::is_empty< std::tuple<> >::value;
}
насколько мне известно, нет. –
Вам нужна структура, которая просто не имеет элементов данных (таким образом, имеет размер 1) или действительно пустую структуру? – kennytm
Возможно, 'std :: tuple <>'? – jogojapan