Я пытаюсь написать код на 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;
Сообщение означает, что компилятор не может сказать, хотите ли вы std::extent
или же concurrency::extent
, Есть три способа исправить это:
#include
что принесло std::extent
— вряд ли это будет хорошим решением, так как вам, вероятно, нужно что-то из этого заголовкаconcurrency::extent
его полное имя всякий раз, когда вы используете его — неудобно, но будет работатьusing namespace std;
и заменить его отдельными заявлениями, такими как using std::endl;
как вы видите среди своих #include
заявления. Мне больше нравится этот последний, хотя это больше работы. Лучший способ выяснить, какой из них вам нужен, это удалить using namespace std;
и скомпилировать. Сообщения об ошибках сообщат вам, какие типы из std вы используете.
Других решений пока нет …