Здравствуйте, PlusMyTwitterFace, Вы писали:
PMT>Можно ли каким-то образом "избавиться" от "лишних" аргументов функции?
PMT>Например, есть у меня, допустим, функция со следующим объявлением:
PMT>void foo(std::size_t* _1, float* _2, double* _3, int* _4);
PMT>При её вызове в некоторых местах мне не нужно передавать ей _1, _2 и _3 для заполнения, лишь _4. Однако из-за того, что в качестве параметров используются указатели, мне всё равно приходится создавать дополнительные переменные:
Как-то так:
template<typename T>
class _
{
public:
operator T*() const { return v_; }
private:
T v_;
};
…
int four;
foo(_<size_t>(), _<float>(), _<double>(), &four);
Интересно было бы добиться синтаксиса
foo(_, _, _, &four) для любого типа (с использованием шаблонного
operator T*?) и при этом сохранить автоматическую деструкцию ненужного объекта.