「*」、「&」などのローカル変数や記号を減らして、コードを読みやすくする方法に問題があります。
私がこのようなものを書くとき:
inline std::string&
EmbraceBySQuote (
std::string& str ) {
str = "'" + str + "'";
return str;
} /* ----- end of function EmbraceBySQuote ----- */
私はこのようなことをすることはできません
fmter % ( *detail::EmbraceBySQuote ( &table.GetTableName ( ) ) );
table.GetTableName ( ) //returns std::string
エラーが発生する
invalid initialization of non-const reference of type ... from a temporary of type rvalue ...
ポインタも同じ
inline std::string*
EmbraceBySQuote (
std::string* str ) {
*str = "'" + *str + "'";
return str;
} /* ----- end of function EmbraceBySQuote ----- */
fmter % ( *detail::EmbraceBySQuote ( &table.GetTableName ( ) ) );
taking address of temporary
だから私はこのようなものが必要です
std::string tableName = table.GetTableName ( );
fmter % ( *detail::EmbraceBySQuote ( &tableName ) );
新しい変数を作成して参照を使用せずに、よりシンプルにする方法を知っていますか?