Как определить класс, который можно преобразовать в любой тип? - PullRequest
0 голосов
/ 01 апреля 2020

Я хочу создать класс, который можно преобразовать в любой тип / класс.

struct any{
  template<typename T>
  operator T(){
    return T();
  }
};
struct S{};
void f(const S&){}
f(any());  //ok
//but if no default constructor  will make error
struct S{
  S()=delete;
};
void f(const S&){}
f(any());  //error

Как решить эту проблему, чтобы создать класс, который можно преобразовать в любой тип / класс

1 Ответ

2 голосов
/ 01 апреля 2020

Как я могу решить эту проблему, чтобы создать класс, который можно преобразовать в любой тип / класс?

В общем случае решить эту проблему невозможно, поскольку невозможно преобразовать в неконструктивный тип.

...