这类似于C++03和C++11之间在运行时可以检测到哪些差异?。但在这种情况下,我希望通过预处理器进行检测。
当源代码同时用于C++03和C++11时,我们应该如何保护移动构造函数(和移动赋值运算符)?
以下是否足够(移动语义是所有C++编译器都采用的基本/核心特性)?
编辑: 该库使用GNUmakefile和标准C++ 03。它不使用Autotools,不使用Cmake,并且不使用Boost。
当源代码同时用于C++03和C++11时,我们应该如何保护移动构造函数(和移动赋值运算符)?
以下是否足够(移动语义是所有C++编译器都采用的基本/核心特性)?
#if (__cpluplus >= 201103L)
Foo(Foo&& other);
#endif
我需要了解编译器的具体情况吗?如果我们需要使用特定于编译器的宏,那么如何处理类似Visual Studio 2012 __cplusplus和C++ 11这样的情况?
很抱歉提出这个问题。我没有一些编译器来测试,比如Visual Studio 2012,Intel ICC和Comeau。
编辑: 该库使用GNUmakefile和标准C++ 03。它不使用Autotools,不使用Cmake,并且不使用Boost。
BOOST_NO_CXX11_RVALUE_REFERENCES
? (建议:使用Boost.Config和BOOST_NO_CXX11_RVALUE_REFERENCES吗?) - T.C.