我在 Linux/GCC 上尝试了一些 CUDA/Thrust 代码并想使用一些 TR1 库,当我注意到一些特殊情况时:大多数库总是会引入tr1_impl/type_traits
(4.4)或只是type_traits
(4.6),并且该标头将始终包含可变参数模板,像这样:
template<typename _Res, typename... _ArgTypes>
struct is_function<_Res(_ArgTypes...)>
: public true_type { };
但是,当我在 C++98 或 C++03 模式下运行 GCC 时,也会使用这些头文件!这怎么行?
我遇到的实际问题是 CUDA 工具链不识别 C++0x 结构,并且cudafe++
(CUDA 前端,即将联合源代码分离为主机和设备源代码的程序)在遇到错误时正确中止可变参数模板参数。
那么... GCC 如何支持和依赖 C++ 的非 0x 方言中的可变参数模板?有没有办法获得TR1的正版C++03版本?