Я пытаюсь static_cast unordered_set и хочу знать, возможно ли это без неопределенного поведения.
Вот что я пытаюсь выполнить sh:
#include <unordered_set>
struct Base{};
struct Derived : public Base{ Derived() = default; };
int main(void){
std::unordered_set<Base *> set;
set.insert(new Derived{});
auto set_ptr{static_cast<std::unordered_set<Derived *>*>(&set)};
}
Я пытаюсь сделать static_cast набор Base *
в набор Derived *
.
Однако это не скомпилируется с ошибкой:
main.cpp: In function ‘int main()’:
main.cpp:21:66: error: invalid static_cast from type ‘std::unordered_set*’ to type ‘std::unordered_set*’
auto set_ptr{static_cast<std::unordered_set<Derived *>*>(&set)};
Мне было интересно, есть ли это способ сделать это, не входя в неопределенную область поведения.