Retourner au contenu associé (journal : Obfusque ton code avec C++)
Posté par serge_sans_paille (site web personnel) le 16 mars 2018 à 18:31. En réponse au journal Obfusque ton code avec C++. Évalué à 3.
J'aurais bien aimé, mais non, la raison étant que si on passe par une fonction template on aurait un truc du genre
template<class... Ts> auto cats(Ts... args) -> decltype(([]() { struct _ { char const * strings[sizeof...(args)] = {args...}; const std::array<unsigned, sizeof...(args)> sizes = make_sizes(args...); }; return strcat_helper<_>();}()))
(parenthèsage non contractuel).
Dans ce cas le decltype dépend du type de retour de la lambda, ce qui rentre dans la catégorie lambda expression in unevaluated context et c'est interdit. Mais ça passe en c++14 il me semble (vu que le type de retour est inféré).
decltype
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル
[^] # Re: Sans macro
Posté par serge_sans_paille (site web personnel) . En réponse au journal Obfusque ton code avec C++. Évalué à 3.
J'aurais bien aimé, mais non, la raison étant que si on passe par une fonction template on aurait un truc du genre
(parenthèsage non contractuel).
Dans ce cas le
decltypedépend du type de retour de la lambda, ce qui rentre dans la catégorie lambda expression in unevaluated context et c'est interdit. Mais ça passe en c++14 il me semble (vu que le type de retour est inféré).