Slip Ahead Logging

It's not your fault at all.

boost::tie 的な

#include <iostream>

template <typename T>
class Tuple {
    T& wrapped_;

public:
    Tuple(T& value): wrapped_(value) {
    }

    Tuple<T>& operator=(const T& rhs) {
        wrapped_ = rhs;
        return *this;
    }
};

template <typename T>
Tuple<T> tie(T& lhs) {
    return Tuple<T>(lhs);
}

int main(int argc, char** argv)
{
    int x;
    tie(x) = 10;
    std::cout << x << std::endl;

    return 0;
}

参照を持ち回すことができるのだなあ.魔法のようだ.operator= マンセー.

追記 (2012 1/13)

気付いたが cin の >> もこれじゃないか.

追記 (2012 1/14)

さらに気付いたが operator[] もこれじゃないか(代入と参照がどちらも可能).