From aa7ce2ef4476fbc0dd461e5fa2c992f20af34aac Mon Sep 17 00:00:00 2001 From: Mark Searles Date: Fri, 31 Aug 2018 09:13:43 -0700 Subject: [PATCH] Add keyword 'explicit' to avoid ambiguity Older gcc, e.g., 5.x, see an ambiguity in some calls. Example error output as seen with gcc 5.5: In file included from benchmark_wino.cpp:1: In file included from ./miopen.hpp:13: In file included from /usr/lib/gcc/x86_64-linux-gnu/5.5.0/../../../../include/c++/5.5.0/regex:38: In file included from /usr/lib/gcc/x86_64-linux-gnu/5.5.0/../../../../include/c++/5.5.0/algorithm:62: In file included from /usr/lib/gcc/x86_64-linux-gnu/5.5.0/../../../../include/c++/5.5.0/bits/stl_algo.h:66: In file included from /usr/lib/gcc/x86_64-linux-gnu/5.5.0/../../../../include/c++/5.5.0/random:51: /usr/lib/gcc/x86_64-linux-gnu/5.5.0/../../../../include/c++/5.5.0/bits/random.tcc:1324:27: error: call to 'abs' is ambiguous const double __y = -std::abs(__n) * __param._M_sm - 1; ^~~~~~~~ /opt/rocm/hip/include/hip/hcc_detail/hip_complex.h:345:31: note: candidate function __DEFINE_HIP_COMPLEX_REAL_FUN(abs, hipCabs) --- include/hip/hcc_detail/hip_complex.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/hip/hcc_detail/hip_complex.h b/include/hip/hcc_detail/hip_complex.h index 804cc51783..d19abd7247 100644 --- a/include/hip/hcc_detail/hip_complex.h +++ b/include/hip/hcc_detail/hip_complex.h @@ -130,7 +130,7 @@ struct hipFloatComplex { #ifdef __cplusplus public: typedef float value_type; - explicit __device__ __host__ hipFloatComplex() : x(0.0f), y(0.0f) {} + __device__ __host__ hipFloatComplex() : x(0.0f), y(0.0f) {} explicit __device__ __host__ hipFloatComplex(float x) : x(x), y(0.0f) {} __device__ __host__ hipFloatComplex(float x, float y) : x(x), y(y) {} MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(hipFloatComplex, unsigned short) @@ -151,7 +151,7 @@ struct hipDoubleComplex { public: typedef double value_type; __device__ __host__ hipDoubleComplex() : x(0.0f), y(0.0f) {} - __device__ __host__ hipDoubleComplex(double x) : x(x), y(0.0f) {} + explicit __device__ __host__ hipDoubleComplex(double x) : x(x), y(0.0f) {} __device__ __host__ hipDoubleComplex(double x, double y) : x(x), y(y) {} MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(hipDoubleComplex, unsigned short) MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(hipDoubleComplex, signed short)