From 0c3a8d2971f1aae030765a9988d43ff40dc76e4e Mon Sep 17 00:00:00 2001 From: Jesse Rosenstock Date: Mon, 25 Apr 2022 09:09:16 +0200 Subject: [PATCH] Fix narrowing conversion error MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes #2. Explicitly cast values to `DTsucc` to avoid error: ``` static/suffixtree/RMQ_succinct.cpp:115:85: error: narrowing conversion of ‘-1’ from ‘int’ to ‘DTsucc {aka unsigned char}’ inside { } [-Wnarrowing] const DTsucc RMQ_succinct::HighestBitsSet[8] = {~0, ~1, ~3, ~7, ~15, ~31, ~63, ~127}; ``` This appears to be an error in C++11 and newer, which is typically the default mode these days. --- libcds/src/static/suffixtree/RMQ_succinct.cpp | 5 ++++- libcds/src/static/suffixtree/RMQ_succinct_lcp.cpp | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/libcds/src/static/suffixtree/RMQ_succinct.cpp b/libcds/src/static/suffixtree/RMQ_succinct.cpp index 56a06f5..f5526e5 100644 --- a/libcds/src/static/suffixtree/RMQ_succinct.cpp +++ b/libcds/src/static/suffixtree/RMQ_succinct.cpp @@ -112,7 +112,10 @@ namespace cds_static{ return c; } - const DTsucc RMQ_succinct::HighestBitsSet[8] = {~0, ~1, ~3, ~7, ~15, ~31, ~63, ~127}; + const DTsucc RMQ_succinct::HighestBitsSet[8] = { + DTsucc(~0), DTsucc(~1), DTsucc(~3), DTsucc(~7), + DTsucc(~15), DTsucc(~31), DTsucc(~63), DTsucc(~127) + }; DTsucc RMQ_succinct::clearbits(DTsucc n, unsigned int x) { return n & HighestBitsSet[x]; diff --git a/libcds/src/static/suffixtree/RMQ_succinct_lcp.cpp b/libcds/src/static/suffixtree/RMQ_succinct_lcp.cpp index 11106fb..820f75e 100644 --- a/libcds/src/static/suffixtree/RMQ_succinct_lcp.cpp +++ b/libcds/src/static/suffixtree/RMQ_succinct_lcp.cpp @@ -115,7 +115,10 @@ namespace cds_static{ return c; } - const DTsucc RMQ_succinct_lcp::HighestBitsSet[8] = {~0, ~1, ~3, ~7, ~15, ~31, ~63, ~127}; + const DTsucc RMQ_succinct_lcp::HighestBitsSet[8] = { + DTsucc(~0), DTsucc(~1), DTsucc(~3), DTsucc(~7), + DTsucc(~15), DTsucc(~31), DTsucc(~63), DTsucc(~127) + }; DTsucc RMQ_succinct_lcp::clearbits(DTsucc n, uint x) { return n & HighestBitsSet[x];