Если у меня есть, например:
template <class T>
class MyOptional { /*...*/ };
Я знаю, что могу определить специализацию, например, для T = bool
, которая будет иметь другую (отдельную) реализацию:
template <> class MyOptional<bool> { /*...*/ };
НоМожно ли сказать, что эта T=bool
специализация равна другому типу (например, MyOptBool
)?Примерно так:
class MyOptBool { /*...*/ };
using Optional<bool> = MyOptBool; /* impossible but looking for similar functionality */
Единственное, что я нашел, это использование наследования:
class MyOptBool { /*...*/ };
template <> class MyOptional<bool> : public MyOptBool {
using MyOptBool::MyOptBool;
};
1-й вопрос: Есть ли более элегантное решение?(просто из любопытства + у меня есть некоторые проблемы с конвертацией и т.и др.)?