Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > шаблон с переменным числом параметров


Автор: neosapient 11.11.2013, 12:53
Здравствуйте.

Помогите разобраться, почему не могу скомпилировать тестовый пример:
Код

#pragma once

template  <typename ... Params>
struct dummy
{
    std::tuple<Params ...> data;
};

Код

#include "dummy.hpp"

int main(int argc, char* argv[])
{
    dummy<int, __int64, float, double> test;
    return 0;
}


Компилятор выдает ошибки
Код

1>  main.cpp
1>c:multiparams\dummy.hpp(3): error C2143: syntax error : missing ',' before '...'
1>c:\multiparams\dummy.hpp(6): error C2143: syntax error : missing ';' before '<'
1>          c:\multiparams\dummy.hpp(7) : see reference to class template instantiation 'dummy<__formal>' being compiled
1>c:\multiparams\dummy.hpp(6): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\multiparams\dummy.hpp(6): error C2238: unexpected token(s) preceding ';'
1>c:\multiparams\main.cpp(6): error C2977: 'dummy' : too many template arguments
1>          c:\multiparams\dummy.hpp(5) : see declaration of 'dummy'
1>c:\multiparams\main.cpp(6): error C2133: 'test' : unknown size
1>c:\multiparams\main.cpp(6): error C2512: 'dummy' : no appropriate default constructor available


Использую Visual Studio Ultimate 2012 SP3

Прикрепил пример к посту.

Автор: vinter 11.11.2013, 12:58
Цитата

Visual Studio Ultimate 2012 SP3

Чтобы использовать Variadic templates на этой студии нужно установить http://www.microsoft.com/en-us/download/details.aspx?id=35515
Но знай, что там багов полный мешок. Поэтому если есть возможность, то нужно использовать MSVC2013(не то чтобы там не было багов, но там их меньше smile

Автор: neosapient 11.11.2013, 13:21
vinter, спасибо!

Ох уж эта студия - второй раз за месяц приходиться патчить.
1) Дружит ли патч с флагом Visual Studio 2012 - Windows XP (v110_xp) сборки программ для WinXP и Win2003?

2) Что-нибудь слышно, когда M$ обещают патч с меньшим количеством багов? а то 2014 год на носу.

Автор: vinter 11.11.2013, 13:23
Патча не будет, есть 2013 студия(скоро уже CTP для 2013 будет). Я думаю, что с XP это не будет работать. Это альфа версия компилятора из 2013 студии.

Автор: neosapient 11.11.2013, 16:38
Пропатчил студию.
Попробовал собрать с флагом по умолчанию Microsoft Visual C++ Compiler Nov 2012 CTP (v120_CTP_Nov2012)
Компилятор осилил Variadic templates )

Программы успешно стартует под Win7
А вот под Win2003 вылезет окошко с ошибкой вида: "программа не является Win32 приложением".

Увы,  важна поддержка платформы Win2003 в текущем проекте, поэтому попробую переписать без этой плюшки.

vinter, спасибо!

+


Автор: DarthTon 11.11.2013, 17:18
В 2013й студии есть тулчейн Visual Studio 2013 - Windows XP (v120_xp).

Автор: neosapient 11.11.2013, 18:28
DarthTon, спасибо.

Автор: vinter 11.11.2013, 18:35
neosapient, на будущее: любая студия, пока не обозначено обратное, так или иначе поддерживает XP(народная воля). CTP это типо альфа версии следующего поколения компилятора. Естественно никто не морочит себе голову с CTP для XP.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)