にゃははー

はへらー

std::forwardとか

いまだstd::forwardの存在意味というか、何に使われるのかがよくわかってない。


あと、std::moveとstd::forwardあるけど、R-value referenceを受け取ってL-value referenceにするのって無いよね多分。つまり

template < typename _T >
inlne auto
rtol( typename std::remove_reference< _T >::type &&val )
  -> typename std::remove_reference< _T >::type &
{ return static_cast< typename std::remove_reference< _T >::type & >( val ); }

こういうやつ。

欲しくなった動機

std::string str;
std::stringstream ss;
ss << ... hoge ...;
//str.swap( ss.str() ); // ill-formed
str.swap( rtol( ss.str() ) );

みたいなのが書きたくなった。