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[] もこれじゃないか(代入と参照がどちらも可能).