error: ‘decay_t’ is not a member of ‘std’
原因可能是sigslot用的C++14编译的,当前的工程又用C++11编译了
解决:
下面的没有的都写上,尤其最后两句,或者重装sigslot用C++11编译,但前者可以后者就没试
# Check C++11 or C++0x support
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
if(COMPILER_SUPPORTS_CXX11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
add_definitions(-DCOMPILEDWITHC11)
message(STATUS "Using flag -std=c++11.")
elseif(COMPILER_SUPPORTS_CXX0X)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
add_definitions(-DCOMPILEDWITHC0X)
message(STATUS "Using flag -std=c++0x.")
else()
message(FATAL_ERROR "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
endif()
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_EXTENSIONS OFF)
文章讨论了在使用sigslot时遇到的错误,原因在于项目由C++14编译器编译,而部分代码期望C++11或C++0x。提供了解决方案,包括检查编译器支持、设置CMake编译标志和添加定义。
415

被折叠的 条评论
为什么被折叠?



