C++14 作為 C++11 之後的小版本更新,雖改動幅度「有意做得較小」(Bjarne Stroustrup 語),卻實實在在地讓語言更清晰、簡單、快速,並為 C++17 鋪路。本文聚焦三大核心領域:泛型 Lambda、擴展的 constexpr、全面的類型推導。

C++14 引入 auto 參數,Lambda 瞬間變身模板:
auto lambda = [](auto x, auto y) { return x + y; };
C++11 必須寫死類型:
auto lambda = [](int x, int y) { return x + y; };
更強大的是,配合 std::move 實現移動捕獲,避免拷貝開銷:
std::unique_ptr<int> ptr(new int(10));
auto lambda = [value = std::move(ptr)] { return *value; };
C++11 限制 constexpr 函數僅能包含單一返回語句。C++14 全面放寬,支持:
if、switch)這意味著複雜的編譯期運算(如編譯期排序、字符串處理)成為可能。
auto DeducedReturnTypeFunction(); // 前向聲明
auto DeducedReturnTypeFunction() { return 42; } // 定義必須可見
限制:
return 必須推導出同一類型return 作為推導基礎decltype(auto):保留引用與 cv 資格auto 與 decltype 推導規則不同,decltype(auto) 結合兩者優勢,精確保留表達式的類型屬性(如引用、const)。
template<class T> constexpr T pi = T(3.1415926535897932385);0b1010 / 0B1010std::make_unique、std::shared_timed_mutex 等C++14 以「小步快跑」的節奏,穩健推進了現代 C++ 的易用性與表達力,是遷移至 C++17 的關鍵墊腳石。