我正在尝试用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;
答案 0 :(得分:5)
该消息表示编译器无法判断您是否需要std::extent
或concurrency::extent
。有三种方法可以解决这个问题:
#include
的{{1}} - 这不太可能是一个很好的解决方案,因为您可能需要来自该标题的内容std::extent
- 笨拙,但会正常工作concurrency::extent
并将其替换为您using namespace std;
语句中的using std::endl;
之类的单个语句。 我喜欢最后一个最好的,虽然这是更多的工作。发现您需要的最佳方法是删除#include
并编译。错误消息将告诉您正在使用的std中的哪些类型。