У меня есть класс вроде этого:шаблон класса отличается типом возвращаемого значения зависит от класса параметры
template<class T>
class A{
// lots of methods here
Something get();
};
Я хочу Something get()
стать const Something &get()
, если T является конкретным классом.
Сначала я попытался сделать это с наследованием, но он стал слишком грязным.
Могу ли я сделать это, не специализируясь на целом class A
и без введения второго шаблона.
возможно станд :: enable_if поможет вам в этом случае? Некоторое решение SFINAE. –
Вам нужно использовать специализированную специализацию. Однако вам может не понадобиться специализироваться на полном объеме A. У вас есть небольшой трюк, когда Something get() находится в шаблоне B. Вы можете специализироваться на этом и иметь наследование от него, чтобы получить предполагаемую форму функции. – qeadz
Возможный дубликат [Переопределение возвращаемого типа в специализированной функции) [http://stackoverflow.com/questions/15911890/overriding-return-type-in-function-template-specialization) –