вторник, 3 февраля 2015 г.

[prog.c++11] Uniform initialization syntax позволяет писать в духе Ruby-новых eDSL :)

Появившаяся в C++11 штука под названием uniform initialization syntax позволяет писать код, который очень напоминает Ruby-новые eDSL-и.

Вот пример на Ruby-овом eDSL-е (найден за 5 минут на просторах Интернета):

project {
    artifact_id 'my-project'
    group_id 'com.example'
    version '1.0.0'
    dependencies {
       dependency {
          group_id 'org.apache.maven'
          artifact_id 'maven-model'
          version '3.0.0'
       }
    }
}

Вот фрагмент C++11 кода:

m_events.emplace(
      subscr_map::value_type {
            key {
                  mbox_id,
                  msg_type,
                  &target_state
            },
            value {
                  mbox,
                  event_handler_data {
                        method,
                        thread_safety
                  }
            }
      } );
Отправить комментарий