簡體   English   中英

如何在C ++ 11之前以尾隨返回類型模擬decltype?

[英]How can I simulate decltype in a trailing-return-type before C++11?

例如,如果我在C ++ 11中有此代碼:

#include <iostream>

template <typename T1, typename T2>
auto add(T1 t1, T2 t2) -> decltype(t1 + t2)
{
    decltype(t1 + t2) val = t1 + t2;
    return val;
}

int main()
{
    double a = 12.5;
    int b = 4;
    std::cout << add(a, b) << std::endl; // prints 16.5
}

我可以返回可由編譯器自動確定的類型。

因為我是C ++的新手,並且當前需要在C ++ 98中實現類似的功能,所以有人知道我會怎么做嗎?

通常,在C ++ 98 / C ++ 03中,為簡化起見,我們手動進行了此操作:

#include <iostream>

template <typename R, typename T1, typename T2>
R add(T1 t1, T2 t2)
{
    R val = t1 + t2;
    return val;
}

int main()
{
    double a = 12.5;
    int b = 4;
    std::cout << add<double>(a, b) << std::endl;
    //              ^^^^^^^^
}

現場演示

這很decltype ,這正是為什么在語言中添加了decltype尾隨返回類型的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM