#ifdef __cplusplus
#include <iostream>
#endif
#define PRINT(x) ; Print(#x, ":", string(x))
template<typename T>
class main_wrapper{
public:
T data;
};
template<typename T>
class external_wrapper{
public:
T data;
};
template<typename T>
class A{
public:
class internal_wrapper : public external_wrapper<T> {};
main_wrapper<internal_wrapper> internal_wrapper_0;
main_wrapper<external_wrapper<T>> external_wrapper_0;
A(){
main_wrapper<internal_wrapper> internal_wrapper_1;
main_wrapper<external_wrapper<T>> external_wrapper_1;
#ifdef __MQL5__
PRINT(__FUNCSIG__);
PRINT(typename(internal_wrapper_0.data.data)); // (Bug) int int
PRINT(typename(external_wrapper_0.data.data)); // (OK) int B*
PRINT(typename(internal_wrapper_1.data.data)); // (Bug) int int
PRINT(typename(external_wrapper_1.data.data)); // (OK) int B*
#endif
}
};
class B{
char data[10];
};
class C{
char data[1000];
};
void OnStart()
{
A<int> val_int;
A<B*> val_ptr;
printf("%d\n", sizeof(main_wrapper<A<B>::internal_wrapper>)); // (Bug) 36 //sizeof(main_wrapper<A<int>::internal_wrapper>) is used
printf("%d\n", sizeof(main_wrapper<A<C>::internal_wrapper>)); // (Bug) 36 //sizeof(main_wrapper<A<int>::internal_wrapper>) is used
}
int main(){
OnStart();
return 1;
}