从 C++17 起,如何从地址获得一个指定类型的对象?用
✅
std::launder
✅ alignas(T) char c[sizeof T];
✅ T* p = new(&c) T { /*args*/ };
✅ p->do_something(); // certainly ok
❌ reinterpret_cast<T*>(&c)->do_something(); // ub 因为 cast 结果没有指向一个 T 类型的对象✅
std::launder(reinterpret_cast<T*>(&c))->do_something(); // ok已知 `struct Test { };` 没有其他相关定义,那么 `std::is_default_constructible_v<std::hash<Test>>` 的值是?
Anonymous Quiz
46%
true
23%
false
23%
<ill-formed>
8%
<undefined behavior>
0%
<implementation defined>
string a="foo";
string b="bar";
pair<string,string> c=make_pair<string,string>(a,b);
以上C++98编译通过,C++11会CE(
string b="bar";
pair<string,string> c=make_pair<string,string>(a,b);
以上C++98编译通过,C++11会CE(
