Ссылки на константы в шаблонах C ++

В шаблоне C ++ с универсальным типом T я могу использовать

const T &

для получения ссылки на константу T. Однако, если теперь T сам является ссылочным типом (например, T = int &), указанный выше термин разрешается в

int &

, а не в

const int &

, что вполне логично, поскольку любая ссылка сама по себе всегда постоянна. Однако есть ли способ потребовать

const T &

, если сам T является ссылочным типом?

Изменить: пример кода для оценки (компилятор g ++):

template <typename T> class TemplateClass
{
public:
    void foo(const T &bar) { }
};

int main()
{
    TemplateClass<int &> x;
    x.foo(0);   // <-- compile error: no conversion from int to int&
    return 0;
}
17
задан emkey08 28 November 2011 в 21:49
поделиться