mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
lalr1.cc: modern C++ no longer needs an assignment for symbols
Reported by Frank Heckenbach. http://lists.gnu.org/archive/html/bug-bison/2018-03/msg00002.html Actually the assignment operator should never be needed: the C++98 requirements for vector::push_back is CopyInsertable, which does not require an assignment operator. However, libstdc++ shipped with GCC up to (and including) 6 uses the assignment operator (which affects Clang on top of libstdc++, but also ICC). So let's keep it for legacy C++. See https://gcc.godbolt.org/z/q0XXmC. * data/lalr1.cc (stack_symbol_type::operator=): Remove. * data/c++.m4 (basic_symbol::operator=): Ditto. * tests/c++.at (C++ Variant-based Symbols Unit Tests): Adjust.
This commit is contained in:
@@ -166,12 +166,12 @@ int main()
|
||||
for (int i = 0; i < 100; ++i)
|
||||
{
|
||||
#if defined __cplusplus && 201103L <= __cplusplus
|
||||
auto ss = parser::stack_symbol_type(1, parser::make_INT(123));
|
||||
st.push(parser::stack_symbol_type{1, parser::make_INT(123)});
|
||||
#else
|
||||
parser::symbol_type s = parser::make_INT(123);
|
||||
parser::stack_symbol_type ss(1, s);
|
||||
#endif
|
||||
st.push(ss);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user