template <class, template<class> class R>
struct T1
{};
template<class>
struct O
{};
template <class A>
class T2:
public T1<A,O>
{
public:
T2() : T1<A,O>()
{}
};
T2<int> p;
С кодом выше это выдает следующую ошибку: E2312 'T1<int,O<{param1}> >' is not an unambiguous base class of 'T2<int>'
Но если бы мне пришлось удалить первый параметр шаблона T1
template <template<class> class R>
struct T1
{};
template<class>
struct O
{};
template <class A>
class T2:
public T1<O>
{
public:
T2() : T1<O>()
{}
};
T2<int> p;
или в T2
наследуется не с параметром шаблона, а жестко запрограммированным типом
template <class, template<class> class R>
struct T1
{};
template<class>
struct O
{};
template <class A>
class T2:
public T1<int,O>
{
public:
T2() : T1<int,O>()
{}
};
T2<int> p;
, затем он компилируется.
У вас есть идеи, в чем может быть проблема? Эта проблема возникает только с компилятором Borland ...
Я понимаю, мне лучше спросить поставщика, но, возможно, кто-то уже имел дело с проблемой.
Версия компилятора:
>bcc32.exe --version
Embarcadero C++ 7.40 for Win32 Copyright (c) 1993-2018 Embarcadero Technologies, Inc.
Preliminary version built Aug 23 2019 08:48:10
Revision 7.40.7174.37042