次のようなクラステンプレートがX
あります。
template <typename T>
class X {
public:
X(T &t): t_ {t} {}
private:
T &t_;
};
整数のT = int
式がコンパイル時間を「返す」だけになるように、それを特殊化する方法はありますか?X<int>(i)
i
i
換言すれば、私はのために同じ構文を持ちたいdouble
とint
(X<double>(d)
およびX<int>(i)
後者無視「構文糖」と「戻り」の整数ことながら、上記のコードで示したような基準を初期化するコンストラクタをそれぞれ)が、元の呼び出しi
無し何かをして。
int
とにdouble
それぞれ特殊化されたテンプレートを提供し、変換演算子を使用できます。このようなもの:
// the same applies for double
template<>
class X<int> {
public:
constexpr X(int t) : t_ {t} {}
constexpr operator int() const { return t; }
private:
int t_;
};
これにより、次のようなものが機能するようになります(あなたの質問を誤解した場合は訂正してください)。
constexpr int n = X<int>(20); // n == 20
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加