Разъединения в требовании Концепции

Вы можете создать класс и добавить этот класс для создания элементов.

Пример:

for (k = 1; k < 11; k++) {
    let div = document.createElement("div");
    div.setAttribute("onclick", "averageFunc(this, Number(prompt('Please, enter number here')))");
    div.className = 'custom-class';
    div.innerHTML = "0"
    document.getElementById("container3").appendChild(div)
}
.custom-class {
  background : red;
  color: white;
  width : 20px;
  height : 20px;
  margin-top :2px;
  text-align : center;
  border : 1px solid black;
}
<div id="container3"></div>

2
задан tangy 19 January 2019 в 08:35
поделиться

2 ответа

Понятия разлагаются в сочетании и дизъюнкции атомных ограничений посредством процесса, называемого нормализацией ограничений , описанного в temp.constr.normal .

Только:

  • логический и &&,
  • логический или ||,
  • Заключенное в скобки выражение ()
  • и id-выражение вида C<A1, A2, ..., An>, где C именует концепт

, разложены , Все остальные выражения являются атомными ограничениями .

Таким образом, требование-выражение , в целом, является атомным ограничением. В понятии TS требование-выражение было разложено, а в C ++ 20 - нет. Насколько я помню, я только что прочитал все документы комитета по c ++, связанные с концепциями, причина была в том, что нормализация выражения требования может привести к взрыву сложности, который может снизить скорость компиляции.

Итак:

requires(T a, T b) { 
    requires requires(T a, T b){a.foo(b)} 
          || requires(T a, T b){a.bar(b)}; // Req 1
    { a.baz() }; // Req 2
    // and onward
}; 

является атомным ограничением . И

  requires(T a, T b) { 
    {a.foo(b)} 
    { a.baz() }; // Req 2
     // and onward
    }
|| requires(T a, T b) { 
     {a.bar(b)} 
     { a.baz() }; // Req 2
      // and onward
     };

является дизъюнкцией двух атомных ограничений. (два требуют выражения )

И наконец:

     ( requires(T a, T b) { a.foo(b); } || requires (T a, T b) { a.bar(b); } )
  && requires(T a, T b) { a.baz(); /* and onward */};

- это соединение дизъюнкции с атомным ограничением.

0
ответ дан Oliv 19 January 2019 в 08:35
поделиться

Определите FooBarExpert как конъюнкцию (или дизъюнкцию) соответствующих выражений требует.

template<typename T> concept bool FooBarExpert =
( requires(T a, T b) {
    { a.foo(b) };
  } ||
  requires(T a, T b) {
    { a.bar(b) };
  }
) &&
requires(T a, T b) {
  { a.baz() };
};
0
ответ дан jcarpenter2 19 January 2019 в 08:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: