diff --git a/CMakeLists.txt b/CMakeLists.txt index 35bd10492..0a19a3a4a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,9 +22,8 @@ endif() #Compiler flags add_definitions(${BACKEND_DEFINES}) -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") if(CMAKE_COMPILER_IS_GNUCXX) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wextra -pedantic") endif() #Binary to convert .cu files to const char * diff --git a/lib/value_scalar.cpp b/lib/value_scalar.cpp index 7cd4d4004..5e869f965 100644 --- a/lib/value_scalar.cpp +++ b/lib/value_scalar.cpp @@ -15,17 +15,17 @@ void value_scalar::init(T const & s) switch(dtype_) { // case BOOL_TYPE: values_.bool8 = s; break; - case CHAR_TYPE: values_.int8 = s; break; - case UCHAR_TYPE: values_.uint8 = s; break; - case SHORT_TYPE: values_.int16 = s; break; - case USHORT_TYPE: values_.uint16 = s; break; - case INT_TYPE: values_.int32 = s; break; - case UINT_TYPE: values_.uint32 = s; break; - case LONG_TYPE: values_.int64 = s; break; - case ULONG_TYPE: values_.uint64 = s; break; + case CHAR_TYPE: values_.int8 = (int8_t)s; break; + case UCHAR_TYPE: values_.uint8 = (uint8_t)s; break; + case SHORT_TYPE: values_.int16 = (int16_t)s; break; + case USHORT_TYPE: values_.uint16 = (uint16_t)s; break; + case INT_TYPE: values_.int32 = (int32_t)s; break; + case UINT_TYPE: values_.uint32 = (uint32_t)s; break; + case LONG_TYPE: values_.int64 = (int64_t)s; break; + case ULONG_TYPE: values_.uint64 = (uint64_t)s; break; // case HALF_TYPE: values_.float16 = s; break; - case FLOAT_TYPE: values_.float32 = s; break; - case DOUBLE_TYPE: values_.float64 = s; break; + case FLOAT_TYPE: values_.float32 = (float)s; break; + case DOUBLE_TYPE: values_.float64 = (double)s; break; default: throw unknown_datatype(dtype_); } } @@ -62,22 +62,22 @@ T value_scalar::cast() const { switch(dtype_) { - case CHAR_TYPE: return values_.int8; - case UCHAR_TYPE: return values_.uint8; - case SHORT_TYPE: return values_.int16; - case USHORT_TYPE: return values_.uint16; - case INT_TYPE: return values_.int32; - case UINT_TYPE: return values_.uint32; - case LONG_TYPE: return values_.int64; - case ULONG_TYPE: return values_.uint64; - case FLOAT_TYPE: return values_.float32; - case DOUBLE_TYPE: return values_.float64; + case CHAR_TYPE: return static_cast(values_.int8); + case UCHAR_TYPE: return static_cast(values_.uint8); + case SHORT_TYPE: return static_cast(values_.int16); + case USHORT_TYPE: return static_cast(values_.uint16); + case INT_TYPE: return static_cast(values_.int32); + case UINT_TYPE: return static_cast(values_.uint32); + case LONG_TYPE: return static_cast(values_.int64); + case ULONG_TYPE: return static_cast(values_.uint64); + case FLOAT_TYPE: return static_cast(values_.float32); + case DOUBLE_TYPE: return static_cast(values_.float64); default: throw unknown_datatype(dtype_); //unreachable } } #define INSTANTIATE(type) value_scalar::operator type() const { return cast(); } - INSTANTIATE(bool) + //INSTANTIATE(bool) INSTANTIATE(char) INSTANTIATE(unsigned char) INSTANTIATE(short)