Есть ли способ для удобства вызова оператора шаблона->? Было бы здорово иметь такую возможность в таких классах, как вариантоператор шаблона ->
Например: (вот только пример)
struct base_t
{
template<class T>
T* operator->()
{
return reinterpret_cast<T*>(this);
}
};
int main(int argc, char* argv[])
{
base_t x;
x.operator-><std::pair<int,int>>()->first; //works, but inconvenient
x<std::pair<int,int>>->first; // does not work
x-><std::pair<int,int>>first; //does not work
return 0;
}
мне нужно доказательство =)
№ – Fanael
«Было бы здорово иметь такую возможность в классах, как вариант« Нет, это не так. Если вы так думаете, рассмотрите тот факт, что в варианте существует объект, тип которого известен только * во время выполнения *. –
@ R.MartinhoFernandes yep, но вы должны использовать его с предостережениями. Есть и другие места, где их можно использовать =) Это похоже на 'boost :: get', исключение для исключения. 'Operator ->' также может генерировать исключение. – kassak