パスワードを忘れた? アカウント作成
97098 journal

eldeshの日記: 戻り値型型推論 2.0 3

日記 by eldesh
かなり前にSafiiさんに振られたネタだったけど,
明け方にふらふらしながらC++0xの話をしてたら, autoでの戻り値型型推論の理解(意味?)が怪しい事が判明したのでテスト.
decltypeは反則だよなーw(強力過ぎるという意味で)

#include <iostream>
#include <typeinfo>
using namespace std;

int    I_D(double d){ return static_cast<int>(d); }
double I_D(int    i){ return (i);
}

template< typename Arg >
auto wrapper( Arg arg ) -> decltype(I_D(arg))
{
    cout << "type:" << typeid( decltype(I_D(arg)) ).name() << endl;
    return I_D(arg);
}

int main(){

    int    x = wrapper(I_D(3.14));
    double d = wrapper(I_D(4));

    cout << x << ":" << d << endl;

    return (0);
}

なんかしっくりきた感じ.
戻り値型の部分にautoを指定するのは,
インスタンス名(式)から推論するときに,まだ引数の解析が終わってないから(多分).

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2009年05月20日 10時41分 (#1569152)

    アキラです。
    戻り値のとこに書くautoは、ただのプレースホルダーらしいです。
    (後ろに書いた戻り値の型は、前のautoに置き換えられる)

typodupeerror

普通のやつらの下を行け -- バッドノウハウ専門家

読み込み中...