Вы можете создать класс и добавить этот класс для создания элементов.
Пример:
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>
Понятия разлагаются в сочетании и дизъюнкции атомных ограничений посредством процесса, называемого нормализацией ограничений , описанного в temp.constr.normal .
Только:
&&
, ||
, ()
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 */};
- это соединение дизъюнкции с атомным ограничением.
Определите 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() };
};