
模闆實參;範本自變量;模闆參數
The compiler cannot determine a template argument.
編譯器無法确定模闆參數。
The generic or template argument does not match the generic or template declaration.
泛型或模闆參數與泛型或模闆聲明不匹配。
An unspecialized class template cannot be used as a template argument in a base class list.
不能将非專用化的類模闆用作基類列表中的模闆參數。
For example, I don't support ideas of direct language support for template argument constraints checking.
比如我不支持對模闆參數約束檢查提供直接語言支持的想法。
"template argument"(模闆實參)是編程領域尤其是C++泛型編程中的核心概念,指在實例化模闆時傳遞給模闆形參(template parameter)的具體值或類型。其作用是為代碼複用提供類型安全且高效的實現方式。
模闆實參分為三類:
std::vector<int>
中的int
,将類型綁定到模闆形參;std::array<double, 5>
中的5
,傳遞編譯期常量值;在C++标準中,模闆實例化時會通過模闆實參生成具體代碼。例如template<typename T> T add(T a, T b)
在調用add<int>(1,2)
時,編譯器生成int add(int a, int b)
的機器碼。這一過程稱為模闆特例化,保證了類型安全與零運行時開銷。
vector<T>
通過類型實參定義存儲類型;參考來源:
在編程(尤其是C++等支持泛型的語言中),template argument(模闆實參) 是用于實例化模闆時提供的具體參數,用于替換模闆定義中的占位符(即模闆形參)。以下是詳細解釋:
template<typename T>
中的 T
。std::vector<int>
中的 int
。模闆實參可以是以下類型:
int
、std::string
)。std::vector<int> vec;// `int` 是類型實參
template<int N> class Array {};
Array<10> arr; // `10` 是非類型實參
template<template<typename> class Container> class Widget {};
Widget<std::vector> w; // `std::vector` 是模闆模闆實參
在函數模闆中,編譯器可能自動推導實參類型,無需顯式指定:
template<typename T>
void print(T value) {}
print(5);// 推導出 `T` 為 `int`
模闆形參可以設置默認值,類似于函數參數:
template<typename T = int>
class Box {};
Box<> box;// 使用默認實參 `int`
通過模闆實參,開發者可以編寫高度複用且類型安全的代碼,例如标準庫中的 std::vector
、std::map
等容器均依賴此機制。如需進一步了解,可參考 C++ 标準文檔或模闆編程教程。
【别人正在浏覽】