|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
25.06.2013, 17:19 | #1 |
Новичок
Джуниор
Регистрация: 25.06.2013
Сообщений: 3
|
Рекурсивная специализация шаблонов
Объясните, пожалуйста, почему код ниже компилируется в VC7.1, но не компилируется в VC9?
namespace aux { template< typename > struct unused; template<typename RootT, template< typename > class T0> struct TrimUnused { typedef T0< typename TrimUnused< RootT, unused >::Result > Result; }; template< typename RootT > struct TrimUnused< RootT, unused > { typedef RootT Result; }; } template< typename T > struct A : public T { void check(char* p) { *p = 'A'; T::check(++p); } }; struct Root { void check(char* p) { *p = 'R'; } }; //! Класс-наследник struct D : public aux::TrimUnused< Root, A >::Result { typedef aux::TrimUnused< Root, A >::Result _BaseT; void check(char* p) { *p = 'D'; _BaseT::check(++p); } }; int _tmain(int argc, _TCHAR* argv[]) { char temp[32] = { 0 }; D d; d.check(temp); return 0; } |
25.06.2013, 23:49 | #2 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
похоже на баг студии
|
26.06.2013, 01:28 | #3 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
лучше год студии писать...я не помню которая из них 9-ая.
и какие ошибки выдала она? Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
26.06.2013, 02:30 | #4 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
Сама ошибка: : error C3200: 'A<T>' : invalid template argument for template parameter 'T0', expected a class template Причем, в коде: http://codepad.org/evtcvanO Код:
А так же тот факт, что гцц нормально переваривает, наводит на мысль, что сие есть баг студийного компиля. |
|
26.06.2013, 15:18 | #5 |
Новичок
Джуниор
Регистрация: 25.06.2013
Сообщений: 3
|
|
26.06.2013, 15:28 | #6 | |
Новичок
Джуниор
Регистрация: 25.06.2013
Сообщений: 3
|
Цитата:
Код:
|
|
11.07.2013, 22:58 | #7 | ||
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Если это ещё актуально: я запостил feedback по поводу этого жучка, и получил от майкрософт ответ:
Posted by Microsoft on 09.07.2013 at 23:27 Цитата:
Цитата:
http://codepad.org/hDK0Uo2g |
||
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Специализация шаблона | 220Volt | Общие вопросы C/C++ | 5 | 11.04.2013 18:03 |
Специализация шаблона | Bubaleh | Общие вопросы C/C++ | 6 | 09.09.2011 12:01 |
Шаблоны класса и специализация | РагнаР | Общие вопросы C/C++ | 9 | 13.03.2011 19:29 |
C++ Специализация шаблона | opensuse2008 | Помощь студентам | 7 | 07.06.2009 18:00 |