Skip to content

Commit 79c1da4

Browse files
committed
workaround compiler bug and address end()
Signed-off-by: Nitish Bharambe <[email protected]>
1 parent 077f892 commit 79c1da4

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

power_grid_model_c/power_grid_model/include/power_grid_model/container_fwd.hpp

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,22 @@
1010

1111
namespace power_grid_model::common {
1212

13-
template <typename ContainerType, typename... RetrievableType>
14-
concept component_container_c = (requires(ContainerType const& c, ID id, Idx2D idx2d) {
13+
namespace detail {
14+
template <typename ContainerType, typename RetrievableType>
15+
concept single_component_container_c = requires(ContainerType const& c, ID id, Idx2D idx2d) {
1516
{ c.template citer<RetrievableType>().begin() } -> std::forward_iterator;
1617
{ c.template citer<RetrievableType>().end() } -> std::forward_iterator;
1718
{ *(c.template citer<RetrievableType>().begin()) } -> std::same_as<RetrievableType const&>;
18-
{ *(c.template citer<RetrievableType>().end()) } -> std::same_as<RetrievableType const&>;
19+
{
20+
c.template citer<RetrievableType>().end()
21+
} -> std::same_as<decltype(c.template citer<RetrievableType>().begin())>;
1922
{ c.template get_item<RetrievableType>(id) } -> std::convertible_to<RetrievableType const&>;
2023
{ c.template size<RetrievableType>() } -> std::same_as<Idx>;
2124
{ c.template get_seq<RetrievableType>(idx2d) } -> std::same_as<Idx>;
22-
} && ...);
25+
};
26+
} // namespace detail
27+
28+
template <typename ContainerType, typename... RetrievableType>
29+
concept component_container_c = (detail::single_component_container_c<ContainerType, RetrievableType> && ...);
2330

2431
} // namespace power_grid_model::common

0 commit comments

Comments
 (0)