У меня есть шаблон класса 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
, ничего не делая.