Можно ли определить специализацию оператора static_cast (int) для преобразования из целых чисел в класс A
Нет.static_cast
- это ключевое слово, а не шаблон или функция.
Однако в вашем классе A
вы можете написать конструктор, который принимает int
, если вы хотите такое поведение.
struct A
{
A(int i) {}
};
A a = 10; //automatic conversion!
Или, если вам нужен синтаксический сахар, который должен выглядеть как гипс, тогда вы можете сделать это:
template<typename To, typename From>
To type_cast(From from)
{
return To(from);
}
и использовать его как:
A a = type_cast<A>(10); //but why would you do that?
Но почемуВы делаете это?Я не вижу никакого преимущества в этом;поэтому я отговариваю вас от написания такого шаблона функции.Я показал вам это только для экспериментальных и образовательных целей.Такой код не должен найти место в реальном коде.