这个答案提出了以下问题。
假设我们有一个简单的
struct S {
int& i;
}
Run Code Online (Sandbox Code Playgroud)
内部(至少在 GCC 和 Clang 中)S只包含一个指向 an 的指针int,并且
static_assert(sizeof(int*) == 8);
static_assert(sizeof(S) == 8);
Run Code Online (Sandbox Code Playgroud)
是否S有唯一的对象表示?GCC 和 Clang 不同意 *:
static_assert( std::has_unique_object_representations_v<int*>);
static_assert(!std::has_unique_object_representations_v<S>); // GCC
static_assert( std::has_unique_object_representations_v<S>); // Clang
Run Code Online (Sandbox Code Playgroud)
哪个编译器就在这里,为什么?
* idclev 463035818指出 GCC 和 Clang 之间存在分歧。