Вместо flexbox
я рекомендую использовать столбцы для таких сеток. Как вы можете видеть, расстояние на нижних изображениях может быть лучше, но для собственного решения для CSS я считаю, что это довольно аккуратно. Нет больше JS:
.container {
max-width: 900px;
width: 100%;
margin: 0 auto;
}
ul {
margin: 0;
padding: 0;
}
ul li {
list-style: none;
font-size: 0;
}
.portfolio ul {
-moz-column-count: 4;
-webkit-column-count: 4;
column-count: 4;
-moz-column-gap: 3px;
-webkit-column-gap: 3px;
column-gap: 3px;
}
.portfolio ul:hover img {
opacity: 0.3;
}
.portfolio ul:hover img:hover {
opacity: 1;
}
.portfolio ul li {
margin-bottom: 3px;
}
.portfolio ul li img {
max-width: 100%;
transition: 0.8s opacity;
}
Необходимо использовать class
/ typename
во втором параметре шаблона в определении
template<typename T, class = std::enable_if_t<std::is_integral_v<T> && std::is_unsigned_v<T>>>
^^^^^
MyClass& MyClass::operator&=(T d)
Когда условие std::is_integral_v<T> && std::is_unsigned_v<T>
истинно, enable_if::type
равно void
. Без class
void
обрабатывается как параметр шаблона нетипичного типа, что является неправильным (void
нельзя использовать как параметр нетипичного параметра , ссылка ).
С помощью class
/ typename
второй параметр определяется как параметр типа, который принимает значение void - class SomeTypeName = void
, если условие в enable_if имеет значение true, или этот шаблон функции отбрасывается из перегрузок, установленных, когда условие enable_if имеет значение false.