Ignore:
Timestamp:
Nov 15, 2023, 11:55:59 AM (11 months ago)
Author:
Andrew Beach <ajbeach@…>
Branches:
master
Children:
b8b5535
Parents:
1ccae59
Message:

It turns out enumerate does work if you use this very particular form of the for loop added in C++17. Ironically in this simple vector case it is about as complex. Swapped the order of fields in the enuemate value to make the binding read key-then-value.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Concurrency/WaitforNew.cpp

    r1ccae59 r45a091b  
    450450        );
    451451
    452         // For some reason, enumerate doesn't work here because of references.
    453         for ( size_t i = 0 ; i < waitfor->clauses.size() ; ++i ) {
     452        for ( const auto & [i, clause] : enumerate( waitfor->clauses ) ) {
    454453                theSwitch->cases.push_back(
    455454                        new ast::CaseClause( location,
     
    457456                                {
    458457                                        new ast::CompoundStmt( location, {
    459                                                 waitfor->clauses[i]->stmt,
     458                                                clause->stmt,
    460459                                                new ast::BranchStmt( location,
    461460                                                        ast::BranchStmt::Break,
     
    538537        ast::Stmt       * setter      = makeSetter( location, flag );
    539538
    540         // For some reason, enumerate doesn't work here because of references.
    541         for ( size_t i = 0 ; i < stmt->clauses.size() ; ++i ) {
    542                 init_clause( comp, acceptables, i, stmt->clauses[i], setter );
     539        for ( const auto & [i, clause] : enumerate( stmt->clauses ) ) {
     540                init_clause( comp, acceptables, i, clause, setter );
    543541        }
    544542
Note: See TracChangeset for help on using the changeset viewer.