LINUX.ORG.RU

История изменений

Исправление DarkEld3r, (текущая версия) :

нужно предпочитать передаче по значению передачу константного объекта по ссылке

Ссылка занимает 4/8 байт. Поэтому большие объекты выгоднее передавать именно по ссылке. Примитивные типы и так занимают немного, так что разницы нет. Плюс теоретически будет лишняя косвенность. Подозреваю, что это всё равно оптимизируется, но так обычно не пишут.

а как тогда код похожий на мой первый вариант (в начале темы) работал в Си++98?

Для реализации enable_if не нужно ничего из С++11, то есть эта функция штука быть (и была) реализована и раньше, просто была не стандартной.

Если очень интересно - посмотри на старые исходники стл, но подозреваю, что там будет самопальный аналог.

шаблоны могут использоваться не только при определении функций и классов, но и просто в выражениях?

Кстати, что это значит?

Deque<int> test1(25, -1);
Вот это ведь тоже «использование шаблона» и как раз в выражении.

Исходная версия DarkEld3r, :

нужно предпочитать передаче по значению передачу константного объекта по ссылке

Ссылка занимает 4/8 байт. Поэтому большие объекты выгоднее передавать именно по ссылке. Примитивные типы и так занимают немного, так что разницы нет. Плюс теоретически будет лишняя косвенность. Подозреваю, что это всё равно оптимизируется, но так обычно не пишут.

а как тогда код похожий на мой первый вариант (в начале темы) работал в Си++98?

Для реализации enable_if не нужно ничего из С++11, то есть эта функция штука быть (и была) реализована и раньше, просто была не стандартной.

Если очень интересно - посмотри на старые исходники стл, но подозреваю, что там будет самопальный аналог.