[MSVC]Internal compiler error
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 07.07.11 10:59
Оценка:
template<class CONT>
void ff(CONT c)
{
    for (CONT::iterator it = c.begin(); it != c.end(); ++it)
    {
        std::cout << *it << std::endl;
    }
}

template<template <class> class std::map>
void ff(CONT c)
{
    for (CONT::iterator it = c.begin(); it != c.end(); ++it)
    {
        std::cout << it->second << std::endl;
    }
}

int _tmain(int argc, _TCHAR* argv[])
{
    std::vector<int> vv;
    vv.push_back(1);
    vv.push_back(3);
    vv.push_back(2);
    ff(vv);

    std::map<int, std::string> mm;
    mm[4] = "1234";
    mm[45] = "rgfdgdf";
    mm[23] = "fhg";
    ff(mm);
}


Падает и 2005-я Professional и 2010 Express.
Re: [MSVC]Internal compiler error
От: nen777w  
Дата: 07.07.11 11:13
Оценка:
ну да, падает, ещё и 2008-я падает если в boost::bind не сделать нужное количество плейсхолдеров.
стабильно так валится. (другие не проверял)

А уже 6-ка как спотыкалась.. бррр

В MS писать надо.
Re: [MSVC]Internal compiler error
От: nen777w  
Дата: 07.07.11 12:36
Оценка:
кстати не мешало бы писать typename т.е.
typename CONT::iterator

студия хоть и хавает но gcc сразу бы по рукам надавал

ну и циклы, оптимизируем-с
for (typename CONT::const_iterator it = c.begin(), itE = c.end(); it != itE; ++it)
Re: [MSVC]Internal compiler error
От: _nn_ www.nemerleweb.com
Дата: 07.07.11 12:55
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>Падает и 2005-я Professional и 2010 Express.


Проблемы:
1. typename CONT::iterator
2. template<template <class> class std::map> void ff(CONT c)
Что такое CONT ??
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[2]: [MSVC]Internal compiler error
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 07.07.11 12:59
Оценка:
Здравствуйте, nen777w, Вы писали:

N>ну и циклы, оптимизируем-с

N>
N>for (typename CONT::const_iterator it = c.begin(), itE = c.end(); it != itE; ++it)
N>


Да тут оптимизировать нечего. На тестовой программке вспоминал как убрать тип элемента контейнера из шаблона, нечаянно нажал компиляцию на недописанной функции — упало.
Re[2]: [MSVC]Internal compiler error
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 07.07.11 13:00
Оценка:
Здравствуйте, _nn_, Вы писали:

__>Здравствуйте, Nuzhny, Вы писали:


N>>Падает и 2005-я Professional и 2010 Express.


__>Проблемы:

__>1. typename CONT::iterator
__>2. template<template <class> class std::map> void ff(CONT c)
__>Что такое CONT ??

Это остатки скопипастенной функции выше.
Re[3]: [MSVC]Internal compiler error
От: _nn_ www.nemerleweb.com
Дата: 07.07.11 13:02
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>Здравствуйте, _nn_, Вы писали:


__>>Здравствуйте, Nuzhny, Вы писали:


N>>>Падает и 2005-я Professional и 2010 Express.


__>>Проблемы:

__>>1. typename CONT::iterator
__>>2. template<template <class> class std::map> void ff(CONT c)
__>>Что такое CONT ??

N>Это остатки скопипастенной функции выше.

Ну так покажите полный код который должен компилироваться.
То, что вы привели компилироваться не должно.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[4]: [MSVC]Internal compiler error
От: VladFein США  
Дата: 07.07.11 13:54
Оценка:
Здравствуйте, _nn_, Вы писали:

__>Ну так покажите полный код который должен компилироваться.

__>То, что вы привели компилироваться не должно.

А падать — должно?
Re: [MSVC]Internal compiler error
От: zaufi Земля  
Дата: 07.07.11 13:56
Оценка:
кроме того, что уже понаписали коллеги выше про typename и копипаст туловища специализации:
0) специализация написана не верно! в исходной функции был параметр тип, в специализации с чего-то вдруг параметр стал шаблонный параметр шаблона
1) во-вторых, то, что там написано вообще не специализация, а фарш какойта (особенно с учетом ошибки копипасты в параметрах функции)
2) втретьих, в С++03 могут быть только полные специализации щаблонных функций
3) и наконец шаблон std::map имеет 4 параметра а не 1!!

Здравствуйте, Nuzhny, Вы писали:


N>
N>template<class CONT>
N>void ff(CONT c)
N>{
N>    for (CONT::iterator it = c.begin(); it != c.end(); ++it)
N>    {
N>        std::cout << *it << std::endl;
N>    }
N>}

N>template<template <class> class std::map>
N>void ff(CONT c)
N>{
N>    for (CONT::iterator it = c.begin(); it != c.end(); ++it)
N>    {
N>        std::cout << it->second << std::endl;
N>    }
N>}

N>int _tmain(int argc, _TCHAR* argv[])
N>{
N>    std::vector<int> vv;
N>    vv.push_back(1);
N>    vv.push_back(3);
N>    vv.push_back(2);
N>    ff(vv);

N>    std::map<int, std::string> mm;
N>    mm[4] = "1234";
N>    mm[45] = "rgfdgdf";
N>    mm[23] = "fhg";
N>    ff(mm);
N>}
N>


N>Падает и 2005-я Professional и 2010 Express.
Re[3]: [MSVC]Internal compiler error
От: nen777w  
Дата: 07.07.11 14:01
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>Здравствуйте, nen777w, Вы писали:


N>>ну и циклы, оптимизируем-с

N>>
N>>for (typename CONT::const_iterator it = c.begin(), itE = c.end(); it != itE; ++it)
N>>


N>Да тут оптимизировать нечего. На тестовой программке вспоминал как убрать тип элемента контейнера из шаблона, нечаянно нажал компиляцию на недописанной функции — упало.


понял. сори.
Re[5]: [MSVC]Internal compiler error
От: _nn_ www.nemerleweb.com
Дата: 07.07.11 14:04
Оценка:
Здравствуйте, VladFein, Вы писали:

VF>Здравствуйте, _nn_, Вы писали:


__>>Ну так покажите полный код который должен компилироваться.

__>>То, что вы привели компилироваться не должно.

VF>А падать — должно?

ICE конечно быть не должно. Это рапорт бага на connect.microsoft.com
Но у вас неверный код, поэтому не должно компилироваться в любом случае.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[2]: [MSVC]Internal compiler error
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 07.07.11 16:30
Оценка:
Здравствуйте, zaufi, Вы писали:

Да ладно тебе. Я за много лет впервые и случайно нашёл ошибку в компиляторах Майкрософта. До этого они у меня тоже падали, но на огромных проектах с кучей кода и в непонятном месте. Спасала перекомпиляция.
Код, что я привёл написан просто так, без малейшей практической цели. Даже если бы он был работоспособным я его запускать не собирался — мне надо было кое-что вспомнить. И тут совершенно случайно падает компилятор — мне показалось это забавным. Только и всего.
Re[3]: [MSVC]Internal compiler error
От: zaufi Земля  
Дата: 07.07.11 18:52
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>Здравствуйте, zaufi, Вы писали:


N>Да ладно тебе. Я за много лет впервые и случайно нашёл ошибку в компиляторах Майкрософта. До этого они у меня тоже падали, но на огромных проектах с кучей кода и в непонятном месте. Спасала перекомпиляция.

N>Код, что я привёл написан просто так, без малейшей практической цели. Даже если бы он был работоспособным я его запускать не собирался — мне надо было кое-что вспомнить. И тут совершенно случайно падает компилятор — мне показалось это забавным. Только и всего.

ну вот мы тебе и напомнили ))
а в целом да, падать компилятор не должен )) -- сабмить багу в M$ )
Re[5]: [MSVC]Internal compiler error
От: Vain Россия google.ru
Дата: 07.07.11 19:43
Оценка:
Здравствуйте, VladFein, Вы писали:

__>>Ну так покажите полный код который должен компилироваться.

__>>То, что вы привели компилироваться не должно.
VF>А падать — должно?
Ну если учесть что за компилятор, то вопросов по этому поводу не должно быть.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[2]: [MSVC]Internal compiler error
От: Sergey Chadov Россия  
Дата: 08.07.11 09:38
Оценка:
Здравствуйте, nen777w, Вы писали:

N>ну да, падает, ещё и 2008-я падает если в boost::bind не сделать нужное количество плейсхолдеров.

N>стабильно так валится. (другие не проверял)

писали уже, ссылку не помню, но если вкратце сказали что фиксить не будут
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.