c++ - 使用 Xlc_r IBM 编译器编译时出现意外文本 "<"

标签 c++ aix xlc

我在 AIX 操作系统上使用 xlC_r 编译器编译代码时遇到问题。我在下面附上了导致问题的代码。我试图编译 使用微软编译器在 MS Windows 上编写代码,并在 Linux 下使用 gcc 编译它,一切正常。我得到的编译器错误如下:

"...../ABC.h", line 12.22: 1540-0063 (S) The text "<" is unexpected.

我搜索了互联网并找到了一些资源( linklink ),但我不知道如何将解决方案集成到我的代码中。一种可能的解决方案 将删除 shared_ptr 并仅具有指针值,但我不喜欢自己管理指针的删除。如果有任何帮助,我将不胜感激。

ABC.h

#ifndef ABC_H
#define ABC_H

#include <vector>
#include <memory>

template<class SR_TYPE, class SM_TYPE>
class ABC {
   private:    
      std::shared_ptr<SR_TYPE> mpRV;
      std::vector<SM_TYPE>     mMsgs;

   public:
      ABC(void);
      ABC(SR_TYPE* pReturnValue);
      virtual ~ABC(void);
};    // ABC
template<class SR_TYPE, class SM_TYPE>
ABC<SR_TYPE, SM_TYPE>::ABC(void) {
}
template<class SR_TYPE, class SM_TYPE>
ABC<SR_TYPE, SM_TYPE>::ABC(SR_TYPE* pReturnValue) {
   mpRV.reset(pReturnValue);
}
template<class SR_TYPE, class SM_TYPE>
ABC<SR_TYPE, SM_TYPE>::~ABC(void) {
}
#endif // ABC_H

ABC.cpp

#include "ABC.h"

class ABCExtended : public ABC<int, std::string> {
   ABCExtended() :
      ABC<int, std::string>()
   {}
   ABCExtended(int* pReturnValue) :
      ABC<int, std::string>(pReturnValue)
   {}
};

提前致谢。

最佳答案

xlC 不符合 C++11。 Shared_ptr 在 std::命名空间中不可用。它确实有用于“实验”功能的特殊 namespace ,并且 shared_ptr 可能在那里。这些实验在 std::tr1 中,您需要使用 __IBMCPP_TR1__ 进行编译。

关于c++ - 使用 Xlc_r IBM 编译器编译时出现意外文本 "<",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32210067/

相关文章:

c++ - XPATH 包含(字符串,字符串)不工作

c++ - std::array: `at(-2)`为什么没有警告或错误?

c++ - boost::uuids::random_generator 线程安全吗?

c++ - FFmpeg 原生 AAC 解码器

java - System.loadLibrary 在 java 1.6 上失败但在 java 1.5 上工作

c++ - IBM xlC 编译器与 Altivec 的循环优化

linux - 如何解决 AIX tar 命令套接字错误?

c# - 无法使用 SSH.NET 库连接到 AIX(Unix) 框 - 错误 : Value cannot be null

c++ - 可移植地识别非标准 C++?

c++ - 为什么 aix 上的 xlC 编译器总是为相同的 c++ 源代码生成不同的目标文件?