模糊语句C ++ - AMP :(范围)含糊不清

时间:2013-06-18 12:50:27

标签: c++ visual-c++ c++-amp

我正在尝试用C ++编写代码 - AMP将多个2D矢量复制到GPU内存中进行处理。但是,一旦我从表达式extent<2> eM(100,100);开始,我就会面临这样的错误:“范围”是不明确的。与C ++中的任何其他扩展表达式是否存在冲突?是因为我使用的库? 这些都是我所包含的库和名称空间,我不能包含代码,它很长,而且会让人感到困惑。

#include "stdafx.h"
#include <Windows.h>
#include <stdint.h>
#include <amp.h>
#include <Shlwapi.h>
#include <vector>
#include <random>
#include <iostream>
using std::endl;
using std::cout;
#include <iomanip>
#include "timer.h"
#include <fstream>
using std::ifstream;
#include <cstring>
#include <sstream>
#include <tchar.h>
using namespace std;
using namespace concurrency;
using std::vector;

1 个答案:

答案 0 :(得分:5)

该消息表示编译器无法判断您是否需要std::extentconcurrency::extent。有三种方法可以解决这个问题:

  • 删除引入#include的{​​{1}} - 这不太可能是一个很好的解决方案,因为您可能需要来自该标题的内容
  • 每当您使用时,都会使用其全名调用std::extent - 笨拙,但会正常工作
  • 删除concurrency::extent并将其替换为您using namespace std;语句中的using std::endl;之类的单个语句。

我喜欢最后一个最好的,虽然这是更多的工作。发现您需要的最佳方法是删除#include并编译。错误消息将告诉您正在使用的std中的哪些类型。