引數成本的引數分類
過載決策將將引數傳遞給引數的成本劃分為四種不同的類別之一,稱為序列。每個序列可包括零次,一次或幾次轉換
-
標準轉換順序
void f(int a); f(42);
-
使用者定義的轉換順序
void f(std::string s); f("hello");
-
省略號轉換序列
void f(...); f(42);
-
列出初始化序列
void f(std::vector<int> v); f({1, 2, 3});
一般原則是標準轉換序列是最便宜的,其次是使用者定義的轉換序列,接著是省略號轉換序列。
一種特殊情況是列表初始化序列,它不構成轉換(初始化列表不是具有型別的表示式)。其成本是通過將其定義為等於其他三個轉換序列之一來確定的,具體取決於引數型別和初始化列表的形式。