Здравствуйте, _NN_, Вы писали:
_NN>using fat = ::std::forward_as_tuple;
_NN>Или хочется новый синтаксис ввести в язык ?
Так в том-то и дело, что синтаксис новый добавили, но с несколько неожиданным поведением.
_NN>Можно попытаться через stdcpp.ru
Сначало можно тут обсудить.
Например, можно было бы ввести новый оператор, который никакой роли сам в языке по себе не играет, но который можно перегрузить для любого, не только пользовательского типа.
float operator =>(MyVariant from, float to)
{
if ( ! from.IsFloat() )
throw std::bad_cast();
to = from.get<float>();
return to;
}
int operator =>(float from, int to)
{
if ( static_cast<float>(static_cast<int>(from)) != from )
throw std::bad_cast();
to = static_cast<int>(from);
return to;
}
Использование:
MyVariant my(1.2f);
float my => f;
int f => n;
float x = 1.f;
o => x;