визуальные неоднозначные утверждения 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;

3

Решение

Сообщение означает, что компилятор не может сказать, хотите ли вы std::extent или же concurrency::extent, Есть три способа исправить это:

  • удалить #include что принесло std::extent — вряд ли это будет хорошим решением, так как вам, вероятно, нужно что-то из этого заголовка
  • вызов concurrency::extent его полное имя всякий раз, когда вы используете его — неудобно, но будет работать
  • Удалить using namespace std; и заменить его отдельными заявлениями, такими как using std::endl; как вы видите среди своих #include заявления.

Мне больше нравится этот последний, хотя это больше работы. Лучший способ выяснить, какой из них вам нужен, это удалить using namespace std; и скомпилировать. Сообщения об ошибках сообщат вам, какие типы из std вы используете.

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]