Я борюсь с ошибкой компиляции C3200
http://msdn.microsoft.com/en-us/library/3xwxftta.aspx обсуждает проблему и приводит в качестве примера:
// C3200.cpp
template<typename T>
class X
{
};
template<template<typename U> class T1, typename T2>
class Y
{
};
int main()
{
Y<int, int> y; // C3200
}
и предлагает вместо этого
Y<X, int> y;
должен быть использован.но я не очень понимаю это ... почему это не может быть
Y<X<int>, int> y;
?это будет иметь для меня больше смысла, потому что в предлагаемом способе фактический тип y все еще не определен на самом деле .. если я дополню данный пример некоторыми переменными, я получу это:
// C3200.cpp
template<typename T>
class X
{
char someChar;
T someOtherVar;
};
template<template<typename U> class T1, typename T2>
class Y
{
T1 var1;
T2 var2;
};
, так что если я простоуказать Y y;как и в предлагаемом решении, компилятор все еще не знает, сколько байтов зарезервировано для y - нет?
может кто-нибудь объяснить мне, что происходит?
спасибо!