У меня есть спор с моим другом о P.O.D типах в C ++. Вся суета связана с тем, будем ли мы сериализовать структуру ниже или нет. И мы должны сериализовать, если структура не является P.O.D. (Plan Old Data).
Он говорит, что если в официальном стандарте не указано, что std :: chrono :: duration должно быть POD , то это зависит от реализации, и мы безопаснее, когда мы всегда сериализуйте это.
Однако я написал небольшой код gist , который доказывает, что он тривиален, имеет стандартное расположение и, таким образом, P.O.D.
#include <iostream>
#include <chrono>
struct myStruct
{
std::chrono::seconds timeSec;
};
int main () {
std::cout << std::boolalpha << "is_pod<std::chrono::seconds> = "
<< std::is_pod<std::chrono::seconds>() << std::endl
<< "is_pod<myStruct> = " << std::is_pod<myStruct>() << std::endl;
std::cout << std::boolalpha << "is_trivial<std::chrono::seconds> = "
<< std::is_trivial<std::chrono::seconds>() << std::endl
<< "is_is_standard_layout<std::chrono::seconds> = "
<< std::is_standard_layout<std::chrono::seconds>() << std::endl;
std::cout << std::boolalpha << "is_trivial<myStruct> = "
<< std::is_trivial<myStruct>() << std::endl
<< "is_is_standard_layout<myStruct> = "
<< std::is_standard_layout<myStruct>() << std::endl;
}