Приносим извинения, если это было задано раньше - обыскали без определенного ответа, и я начинаю задаваться вопросом, возможно ли это. Я пытаюсь изучить C++ 11 и столкнулся с проблемами с вариативными шаблонами. Я думаю, что я понимаю (наконец) концепцию параметров вариационной функции и почему/как рекурсия используется для их развертывания и обработки, но у меня возникают проблемы с (по-моему) аналогичной концепцией в конструкторах классов.Возможно ли создать полностью произвольный отдельный членский кортеж в конструкторе конструктора переменных C++ 11?
Предположим, я хочу создать вариационный шаблонный класс, который имеет контейнер смешанного типа (предположим, что кортеж) является частным членом. Можно ли нажимать произвольное количество объектов с различной типизацией в этот кортеж, когда объект класса сконструирован? Что-то вроде:
#include <tuple>
// forward declaration - is this needed?
template <class ... args>
class myClass;
template <class H, class ... T>
class myClass <H, T ...>
{
private:
std::tuple<anything can go here> mycontainer;
public:
myClass(const H& head, const T& ... tail)
{
push head into mycontainer;
do some sort of recursion with tail;
}
}
Я уже завинчивания вокруг с станд :: tuple_cat и станд :: make_tuple и подумал, что я на что-то на некоторое время, но не повезло.
Прошло много времени с тех пор, как я имел какое-либо отношение к C++, так что извиняюсь, если я полностью схожу с ума. Я только начал смотреть на это после некоторого чтения о возможностях C++ 11.
EDIT: Просто добавить, что я на GCC 4.8.x и/или Visual Studio 2012
Обратите внимание, что версия версии VS2012 не поддерживает вариационные шаблоны: вам нужно получить выпуск компилятора CTP в ноябре 2012 года или предварительный просмотр VS2013, если вы хотите использовать переменные в VS. – Casey
@ Casey: Спасибо. Я получу предварительный просмотр 2013 года. – thekamz