C++ 遍歷可變模板參數(shù) iterate variadic template arguments


template<size_t I = 0, typename FuncT, typename ...Tp>
inline typename std::enable_if_t<I == sizeof ...(Tp)> for_each(std::tuple&, FuncT)
{
}

template<size_t I = 0, typename FuncT, typename ...Tp>
inline typename std::enable_if_t<I < sizeof ...(Tp)> for_each(std::tuple<Tp ...>& t, FuncT f)
{
    f(std::get(t));   
    for_each<I + 1, FuncT, Tp...>(t, f);
}

template<typename ...Args>
auto print(Args ...args)
{
    auto a = std::forward_as_tuple(args...);
    for_each(a, [](auto x)
    {
        std::cout << typeid(x).name() << ":" << x << std::endl;
    });
}

int main()
{
    print(10, 'c', "bbb", string("123"));
}

結(jié)果如下:

int:10

char:c

char const *:bbb

class std::basic_string, class std::allocator >:123
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 可變參數(shù)模板 原文鏈接: http://blog.csdn.net/xiaohu2022/article/deta...
    小白將閱讀 5,163評論 0 8
  • 簡述 可變參數(shù)模板(Variadic Template)是C++11引入的新特性,讓模板編程更容易,且在運行時更少...
    Brent姜閱讀 3,517評論 1 2
  • 我們在C語言編程中會遇到一些參數(shù)個數(shù)可變的函數(shù),例如printf() 這個函數(shù),它的定義是這樣的: int pri...
    Mr_Me閱讀 852評論 0 2
  • 1. 簡介 在C語言中可以使用printf進行格式化輸出,函數(shù)聲明如下: 其中第一個參數(shù)format代表需要格式化...
    沒事造輪子閱讀 1,045評論 3 5
  • 和一老友聊天,初中同學(xué),那個以前對我說以后和男生說話別再臉紅的大小伙子要升級當(dāng)爸爸了,恭喜恭喜! 感慨,時間"嘀嗒...
    齊影兒閱讀 407評論 0 1

友情鏈接更多精彩內(nèi)容