C++11 test fixes for Visual Studio 2017

This commit is contained in:
William S Fulton 2019-04-08 19:33:59 +01:00
parent 0303e821ef
commit bf9065395a
3 changed files with 19 additions and 11 deletions

View File

@ -19,17 +19,17 @@ template<typename T> struct Y {
typedef T2 another_type; typedef T2 another_type;
}; };
value_type create1() const { return T(); } value_type create1() const { return T(); }
Y::value_type create2() const { return T(); } typename Y::value_type create2() const { return T(); }
Y<T>::value_type create3() const { return T(); } typename Y<T>::value_type create3() const { return T(); }
YY::value_type create4() const { return T(); } typename YY::value_type create4() const { return T(); }
Y<T>::YY::value_type create5() const { return T(); } typename Y<T>::YY::value_type create5() const { return T(); }
Y<T>::YYY<T>::value_type create6() const { return T(); } Y<T>::YYY<T>::value_type create6() const { return T(); }
typename Y<T>::template ZZZ<T>::another_type create7() const { return T(); } typename Y<T>::template ZZZ<T>::another_type create7() const { return T(); }
// With global scope prefix // With global scope prefix
::Y<T>::value_type create13() const { return T(); } typename ::Y<T>::value_type create13() const { return T(); }
::Y<T>::YY::value_type create15() const { return T(); } typename ::Y<T>::YY::value_type create15() const { return T(); }
::Y<T>::YYY<T>::value_type create16() const { return T(); } ::Y<T>::YYY<T>::value_type create16() const { return T(); }
typename ::Y<T>::template ZZZ<T>::another_type create17() const { return T(); } typename ::Y<T>::template ZZZ<T>::another_type create17() const { return T(); }
}; };

View File

@ -4,7 +4,8 @@
struct A { struct A {
int member; int member;
}; };
const int align1 = alignof(A::member); const int align1 = alignof(int);
const int align2 = alignof(int *);
%} %}
%{ %{

View File

@ -8,7 +8,8 @@
%inline %{ %inline %{
template<typename T> struct Temper { template<typename T> class Temper {
public:
T val; T val;
}; };
@ -18,14 +19,20 @@ public:
int memberFunction() { return 100; } int memberFunction() { return 100; }
}; };
class B {
public:
short member;
short memberFunction() { return 100; }
};
template class Temper<A>; template class Temper<A>;
extern template class Temper<A>; extern template class Temper<B>;
template class Temper<A*>; template class Temper<A*>;
extern template class Temper<A*>; extern template class Temper<B*>;
template class Temper<int>; template class Temper<int>;
extern template class Temper<int>; extern template class Temper<short>;
%} %}
%template(TemperInt) Temper<int>; %template(TemperInt) Temper<int>;