N
Nephi Immortal
When I try to use global function to call two class’ parameters, I got Compiler error message. I don’t see anything wrong in my code. What is going on?
main.cpp(1714): error C2770: invalid explicit template argument(s) for 'void Check(A<e,T>,A<e,T>::?$B@$QW4E@@(*(_BAAB@))$RT2@BAAC@$Q$R2BAAC@(*(_BAAD@)))'
main.cpp(1698) : see declaration of 'Check'
enum E
{
eA,
eB
};
template< E e, typename T >
struct A
{
template< E e2, typename T2, T2 size >
struct B
{
B()
{
}
~B()
{
}
};
A()
{
}
~A()
{
}
};
template< E e2, typename T2, T2 size >
void
Check(
A< e2, T2 > ref,
typename A< e2, T2 >::B< e2, T2, size > ref2
)
{
}
int main()
{
A< eA, int > a;
A< eA, int >::B< eA, int, 1 > b;
Check< eA, int, 1 >(
a,
b
);
return 0;
}
main.cpp(1714): error C2770: invalid explicit template argument(s) for 'void Check(A<e,T>,A<e,T>::?$B@$QW4E@@(*(_BAAB@))$RT2@BAAC@$Q$R2BAAC@(*(_BAAD@)))'
main.cpp(1698) : see declaration of 'Check'
enum E
{
eA,
eB
};
template< E e, typename T >
struct A
{
template< E e2, typename T2, T2 size >
struct B
{
B()
{
}
~B()
{
}
};
A()
{
}
~A()
{
}
};
template< E e2, typename T2, T2 size >
void
Check(
A< e2, T2 > ref,
typename A< e2, T2 >::B< e2, T2, size > ref2
)
{
}
int main()
{
A< eA, int > a;
A< eA, int >::B< eA, int, 1 > b;
Check< eA, int, 1 >(
a,
b
);
return 0;
}