2010-09-15 18 views

Respuesta

14

No, no pueden. El borrador del estándar C++ 0x tiene una sección (14.5.5) sobre especializaciones parciales de plantillas de clases, pero no menciona las especializaciones parciales de plantillas de funciones.

+0

Tenía entendido que esto está en C++ 0x. – Puppy

+0

@DeadMG: Sí, me refiero al borrador del estándar C++ 0x, http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3092.pdf –

+0

FYI: El El último borrador es ahora [N3126] (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3126.pdf) [Advertencia: Gran PDF]. La respuesta no es diferente en el último borrador. –

-1

No; they were proposed as core language issue #229 (desde n1295) pero finalmente rechazado (y con razón, ya que la sobrecarga hace el trabajo).

+16

Tengo que estar en desacuerdo con "con toda razón". La sobrecarga no siempre funciona, ya que no podemos tener sobrecargas que difieran solo en el tipo de devolución. Sería bueno si pudiera hacer algo como lo siguiente, por ejemplo: template T & Foo() {...} plantilla vacío Foo () {...} –

+0

Estoy de acuerdo en que la sobrecarga no es suficiente. Digamos que quiero sobrecargar std :: make_shared para una estructura de C heredada con funciones custom create_ * y destroy_ *. Una especialización parcial sería muy útil en este caso. – AndyJost

+3

Más desacuerdo a "con razón": 'enable_if'. Si pudiéramos especializar parcialmente las funciones, podríamos evitar hackers torpes con tag helpers. – GreenScape

Cuestiones relacionadas