Restore testing template_expr testcase

Problems handling < and > in template parameters are now fixed.
Remove illegal C++ code (template typedefs) - replace with a function
using same template.
This commit is contained in:
William S Fulton 2022-11-23 07:32:12 +00:00
parent ca5c68e544
commit e0904f44eb
2 changed files with 13 additions and 4 deletions

View File

@ -90,7 +90,6 @@ CPP_TEST_BROKEN += \
nested_private \
template_default_pointer \
template_private_assignment \
template_expr \
$(CPP11_TEST_BROKEN) \
$(CPP14_TEST_BROKEN) \
$(CPP17_TEST_BROKEN) \
@ -459,6 +458,7 @@ CPP_TEST_CASES += \
template_enum_ns_inherit \
template_enum_typedef \
template_explicit \
template_expr \
template_extend1 \
template_extend2 \
template_extend_overload \

View File

@ -2,8 +2,11 @@
// bug #925555
%inline %{
struct ThisType {};
template<int _size, int _stride, class __elementTypeSequence, class __dataPtrType>
class vctFixedLengthConstSequenceBase {};
template<int __stride, class __elementTypeSequence,
template<int _size, int __stride, class __elementTypeSequence,
class __dataPtrType, class __elementType>
inline const ThisType &
ConcatenationOf(const vctFixedLengthConstSequenceBase<_size - 1,
@ -30,9 +33,15 @@ class X {};
// bug #646275
%inline %{
struct Ty {};
template<typename Type, short a> struct Test {};
template<int rank, typename X, typename Type> struct CondRetType {
typedef Type TestRm1;
};
template<typename Type, short Rank>
typedef typename CondRetType< Rank!=1,
Test<Type,Rank-1>, Type>::TestRm1 TestRm1;
void Func(typename CondRetType< Rank!=1,
Test<Type,Rank-1>, Type>::TestRm1) {}
%}