use constexpr if

This commit is contained in:
Siarhei Fedartsou 2024-05-21 19:29:42 +02:00
parent 5d2cd4d0f2
commit edc4522f9b

View File

@ -290,16 +290,18 @@ void relaxOutgoingEdges(const DataFacade<Algorithm> &facade,
const auto &cell =
cells.GetCell(metric, level, partition.GetCell(level, heapNode.node));
auto destination = cell.GetDestinationNodes().begin();
auto distance = [&heapNode]() -> auto {
auto distance = [&heapNode, &cell]() -> auto {
if constexpr (std::is_same_v<typename SearchEngineData<
mld::Algorithm>::MapMatchingQueryHeap,
Heap>) {
return cell.GetOutDistance(heapNode.node).begin();
} else {
(void)cell;
(void)heapNode;
return 0;
}
} ;
}();
for (auto shortcut_weight : cell.GetOutWeight(heapNode.node))
{
BOOST_ASSERT(destination != cell.GetDestinationNodes().end());
@ -313,7 +315,7 @@ void relaxOutgoingEdges(const DataFacade<Algorithm> &facade,
if (!toHeapNode)
{
if constexpr (std::is_same_v<typename SearchEngineData<
Algorithm>::MapMatchingQueryHeap,
mld::Algorithm>::MapMatchingQueryHeap,
Heap>)
{
const EdgeDistance to_distance = heapNode.data.distance + *distance;
@ -327,7 +329,7 @@ void relaxOutgoingEdges(const DataFacade<Algorithm> &facade,
else if (to_weight < toHeapNode->weight)
{
if constexpr (std::is_same_v<typename SearchEngineData<
Algorithm>::MapMatchingQueryHeap,
mld::Algorithm>::MapMatchingQueryHeap,
Heap>)
{
const EdgeDistance to_distance = heapNode.data.distance + *distance;
@ -351,16 +353,18 @@ void relaxOutgoingEdges(const DataFacade<Algorithm> &facade,
const auto &cell =
cells.GetCell(metric, level, partition.GetCell(level, heapNode.node));
auto source = cell.GetSourceNodes().begin();
auto distance = [&heapNode]() -> auto {
auto distance = [&heapNode, &cell]() -> auto {
if constexpr (std::is_same_v<typename SearchEngineData<
mld::Algorithm>::MapMatchingQueryHeap,
Heap>) {
return cell.GetOutDistance(heapNode.node).begin();
} else {
(void)cell;
(void)heapNode;
return 0;
}
} ;
}();
for (auto shortcut_weight : cell.GetInWeight(heapNode.node))
{
BOOST_ASSERT(source != cell.GetSourceNodes().end());
@ -374,7 +378,7 @@ void relaxOutgoingEdges(const DataFacade<Algorithm> &facade,
if (!toHeapNode)
{
if constexpr (std::is_same_v<typename SearchEngineData<
Algorithm>::MapMatchingQueryHeap,
mld::Algorithm>::MapMatchingQueryHeap,
Heap>)
{
const EdgeDistance to_distance = heapNode.data.distance + *distance;
@ -388,7 +392,7 @@ void relaxOutgoingEdges(const DataFacade<Algorithm> &facade,
else if (to_weight < toHeapNode->weight)
{
if constexpr (std::is_same_v<typename SearchEngineData<
Algorithm>::MapMatchingQueryHeap,
mld::Algorithm>::MapMatchingQueryHeap,
Heap>)
{
const EdgeDistance to_distance = heapNode.data.distance + *distance;
@ -434,7 +438,7 @@ void relaxOutgoingEdges(const DataFacade<Algorithm> &facade,
if (!toHeapNode)
{
if constexpr (std::is_same_v<
typename SearchEngineData<Algorithm>::MapMatchingQueryHeap,
typename SearchEngineData<mld::Algorithm>::MapMatchingQueryHeap,
Heap>)
{
const auto node_distance =
@ -452,7 +456,7 @@ void relaxOutgoingEdges(const DataFacade<Algorithm> &facade,
else if (to_weight < toHeapNode->weight)
{
if constexpr (std::is_same_v<
typename SearchEngineData<Algorithm>::MapMatchingQueryHeap,
typename SearchEngineData<mld::Algorithm>::MapMatchingQueryHeap,
Heap>)
{
const auto node_distance =