Почему компилятор VC++ 2010 дает сбой при компиляции простого кода?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Почему компилятор VC++ 2010 дает сбой при компиляции простого кода?

Сообщение Anonymous »

Я столкнулся с очень странным симптомом. Кто может сказать мне, в чем основная причина?

У меня последняя версия компилятора VC++: «Microsoft Visual C++ 2010: 01019-532-2002102-70860»

Шаги для воспроизведения:
  • Создайте пустой консольный проект win32
  • Добавьте новый файл cpp с именем main.cpp
  • Вставьте следующий код в main.cpp
  • Компиляция
  • Компилятор аварийно завершает работу и выдает следующее сообщение:

\bug\main.cpp(54893757): фатальный ошибка
C1001: Произошла внутренняя ошибка
в компиляторе. (файл компилятора
'msc1.cpp', строка 1420)

Чтобы обойти эту проблему, попробуйте
упростить или изменить программу
рядом с указанными выше местоположениями.
Выберите команду «Техническая поддержка
» в меню «Справка Visual C++»
или откройте файл справки «Техническая поддержка
» для получения дополнительной информации.

Эта ошибка произошла во внедренном тексте:

d:\bug\main.cpp(63) : см. ссылку на
создание экземпляра шаблона функции
'XDummy Test(T)' компилируется с использованием [
T=int ]

Сборка НЕ ​​удалась.


Ниже исходный код main.cpp:

#include

template
struct trait_dummy
{
static const int value = std::tr1::is_convertible::value;
};

template
class X
{
public:
template
X(T_& rColl)
{}
};

template
X f(T_ rColl, std::false_type)
{
return X(rColl);
}

template
auto f(T_& rColl) -> decltype(f(rColl, std::false_type()))
{
return f(rColl, std::false_type());
}

template
X f(It_ first, size_t nSize, typename std::tr1::enable_if::type* dummy = 0)
{
return X(first, first + nSize);
}

class XTest
{
public:
void foo()
{
auto v = f(m_Suite);
}

std::vector m_Suite;
};

const int g_dummy = 0;
class XDummy
{
public:
XDummy(int, int, int, int dummy = g_dummy)
{}
};

template
XDummy Test(T)
{
return XDummy(0, 0, 0);
}

int main()
{
Test(0);
//XTest().foo();

return 0;
}


Подробнее здесь: https://stackoverflow.com/questions/429 ... imple-code
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как уменьшить размер простого приложения на С++? (скомпилировано с помощью компоновщика C++ RAD Studio 2010)
    Anonymous » » в форуме C++
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Компилятор Visual Studio 2010 C++ выделяет неправильный размер для класса
    Anonymous » » в форуме C++
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Visual Studio 2010 автоматически переключилась на компилятор C++/CLI.
    Anonymous » » в форуме C++
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Создание программы извлечения/компиляции в Visual C ++ 2010, но имеет ошибки
    Anonymous » » в форуме C++
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Как создать DLL из существующего кода C++ с помощью файла DEF в Visual Studio 2010
    Anonymous » » в форуме C++
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»