Сообщение Re[3]: Специализация шаблонов по 2 параметрам от 18.02.2016 14:08
Изменено 18.02.2016 20:58 andyp
Здравствуйте, rg45, Вы писали:
R>На самом деле, не обязательно. В С++ существует и такая форма специализации для функций-членов шаблонных классов:
R>И это именно специализация функций-членов, без специализации самого шаблонного класса.
Про это я знал, но ТС определил конструкторы в теле класса, а затем вне тела для специализации. Поэтому я и подумал, что ему потребуется определить специализацию.
R>Такая форма специализации, конечно же, допустима и для конструкторов. Поэтому в исходном примере достаточно просто заменить специализацию конструкторов на перегрузку:
Занятный пример. Это вроде компилируется, но на мой взгляд ломает ODR. Компиляторам вроде бы можно не отлавливать подобное. См. дискуссию здесь:
http://stackoverflow.com/questions/26305368/c-define-member-function-outside-template-class-but-in-header
Я бы так точно не делал.
R>На самом деле, не обязательно. В С++ существует и такая форма специализации для функций-членов шаблонных классов:
R>И это именно специализация функций-членов, без специализации самого шаблонного класса.
Про это я знал, но ТС определил конструкторы в теле класса, а затем вне тела для специализации. Поэтому я и подумал, что ему потребуется определить специализацию.
R>Такая форма специализации, конечно же, допустима и для конструкторов. Поэтому в исходном примере достаточно просто заменить специализацию конструкторов на перегрузку:
Код | |
R>
| |
Занятный пример. Это вроде компилируется, но на мой взгляд ломает ODR. Компиляторам вроде бы можно не отлавливать подобное. См. дискуссию здесь:
http://stackoverflow.com/questions/26305368/c-define-member-function-outside-template-class-but-in-header
Я бы так точно не делал.
Re[3]: Специализация шаблонов по 2 параметрам
Здравствуйте, rg45, Вы писали:
R>На самом деле, не обязательно. В С++ существует и такая форма специализации для функций-членов шаблонных классов:
R>И это именно специализация функций-членов, без специализации самого шаблонного класса.
Про это я знал, но ТС определил конструкторы в теле класса, а затем вне тела для специализации. Поэтому я и подумал, что ему потребуется определить специализацию.
R>Такая форма специализации, конечно же, допустима и для конструкторов. Поэтому в исходном примере достаточно просто заменить специализацию конструкторов на перегрузку:
Занятный пример. Это вроде компилируется, но на мой взгляд ломает ODR. Компиляторам вроде бы можно не отлавливать подобное. См. дискуссию здесь:
http://stackoverflow.com/questions/26305368/c-define-member-function-outside-template-class-but-in-header
Я бы так точно не делал.
Вы правы, здесь все нормально, просто это специализации отдельных методов класса.
R>На самом деле, не обязательно. В С++ существует и такая форма специализации для функций-членов шаблонных классов:
R>И это именно специализация функций-членов, без специализации самого шаблонного класса.
Про это я знал, но ТС определил конструкторы в теле класса, а затем вне тела для специализации. Поэтому я и подумал, что ему потребуется определить специализацию.
R>Такая форма специализации, конечно же, допустима и для конструкторов. Поэтому в исходном примере достаточно просто заменить специализацию конструкторов на перегрузку:
Код | |
R>
| |
http://stackoverflow.com/questions/26305368/c-define-member-function-outside-template-class-but-in-header
Я бы так точно не делал.
Вы правы, здесь все нормально, просто это специализации отдельных методов класса.