This commit is contained in:
blueloveTH 2023-06-17 13:30:52 +08:00
parent ca5772086f
commit fb5220a925
2 changed files with 13 additions and 1 deletions

View File

@ -36,7 +36,9 @@ struct Expr{
struct CodeEmitContext{ struct CodeEmitContext{
VM* vm; VM* vm;
CodeObject_ co; CodeObject_ co;
stack<Expr_> s_expr; // some bugs on MSVC (error C2280) when using std::vector<Expr_>
// so we use stack_no_copy instead
stack_no_copy<Expr_> s_expr;
int level; int level;
std::set<Str> global_names; std::set<Str> global_names;
CodeEmitContext(VM* vm, CodeObject_ co, int level): vm(vm), co(co), level(level) {} CodeEmitContext(VM* vm, CodeObject_ co, int level): vm(vm), co(co), level(level) {}

View File

@ -141,4 +141,14 @@ public:
Container& data() { return vec; } Container& data() { return vec; }
}; };
template <typename T, typename Container=std::vector<T>>
class stack_no_copy: public stack<T, Container>{
public:
stack_no_copy() = default;
stack_no_copy(const stack_no_copy& other) = delete;
stack_no_copy& operator=(const stack_no_copy& other) = delete;
stack_no_copy(stack_no_copy&& other) noexcept = default;
stack_no_copy& operator=(stack_no_copy&& other) noexcept = default;
};
} // namespace pkpy } // namespace pkpy