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() ) );
みたいなのが書きたくなった。