템플릿을 사용하여 단순하지 않은 유형의 공용체 생성을 단순화하고 싶습니다. 다음은 실제로이 "일"을 보이지만 사양에 의해 기술적으로 정당하지 않은 : template<typename T> struct union_entry {
void (*destructor_)(void *); // how to destroy type T when active
C++ 표준은 mutex, atomics 또는 conditinal_variable이 표준 레이아웃 유형임을 지정합니다. 이 사양의 이점은 무엇입니까? 사용자가이 속성을 어떻게 활용할 수 있습니까? 일반적으로 구현의 세부 사항을 모른 채 유형이 표준 레이아웃이라는 것을 알고 있다면 나는 무엇을 얻을 수 있습니까?
것이 있습니다. http://en.cppreference.com/w/cpp/language/union#Explanation는 말한다 : If two union members are standard-layout types, it's well-defined to examine their common subsequence on any compiler 그리고 이렇
난 그냥 ++ g 주변에 놀고 있었는데, 나는 #include <type_traits>
class Foo {
public: int x;
public: char y;
public: double z;
};
static_assert(std::is_standard_layout<Foo>::value, "Foo is not standard layout"
struct A {
// ... some methods ...
std::vector<int> foo;
// ... more data members ...
};
g ++ 4.7 및 libstdC++를 사용하면 std::is_standard_layout<A>::value == true이됩니다. 그러나 다른 컴파일러 또는 표준 라