¿Cómo comprobar si el tipo de C++ es copiable trivialmente? Tengo una clase, que utiliza las funciones memcpy y memcmp con la plantilla especificada tipo T y me gustaría disparar afirmar para los tipos, que no son seguros para copiar con memcpy. ¿Hay alguna manera de hacer eso (con el estándar existente)?C++ is_trivially_copyable check
Respuesta
No, no es posible en C++ 98/C++ 03. Cosas como esta son las razones por las que <type_traits>
se agregó a C++ 0x. Algunas de las características de <type_traits>
se pueden implementar en C++ 03, a menudo utilizando el principio SFINAE, pero varias, incluida std::is_trivially_copyable<T>
, simplemente requerirán soporte de compilador incorporado.
Sí, esa también fue mi impresión. Gracias. – axe
Lo más parecido es boost::is_pod<>.
Sin embargo, no "solo funciona" para los tipos de clase. – ThomasMcLeod
Existen características de tipo disponibles para esto en boost.
Sin embargo, está perdiendo el tiempo, recordar que un tipo no va a ser más rápido que lo que su optimizador producirá con un constructor de copia si el tipo es copiable trivialmente. Solo usa el constructor de copia.
Buen punto. (más caracteres) – aschepler
¿Qué rasgos de tipo? is_pod no es exactamente lo que estoy buscando, ya que Maxim señaló que es casi lo mismo. – axe
_Sin embargo, está desperdiciando su tiempo, recordar que un tipo no va a ser más rápido que lo que su optimizador producirá con un constructor de copia si el tipo es trivialmente copiable. Simplemente use el constructor de copia. No es para el rendimiento, simplemente no quiero que mi clase trabaje para tipos con un constructor de copia no trivial. Podría especializarlo para todos los tipos integrales, sin embargo, entonces no funcionará para POD. – axe
- 1. ACL Check/Management en C#
- 2. C# ToDictionary con ContainsKey check
- 3. spamassassin check score C# code
- 4. android radiobutton check after clearing check issue
- 5. .NET Spell Check control?
- 6. iPhone UIScrollView Speed Check
- 7. JQuery Check Input File
- 8. PHP check file extension
- 9. Clojure not nil check
- 10. check isatty in bash
- 11. $ null check in velocity
- 12. Proxy Check en python
- 13. PHP Check Process ID
- 14. powershell check sharepoint URLs
- 15. ¿Qué hace "make check"?
- 16. DeviceOrientation Check en AppDelegate
- 17. fclose return value check
- 18. git hook sintaxis check
- 19. Javascript check browser
- 20. WP7 Policy Check
- 21. drupal check api checkboxes
- 22. bash check mysql connect
- 23. Java ParseInt Sanity Check
- 24. C# Events and Lambdas, alternative to null check?
- 25. C# winform check si el control es físicamente visible
- 26. Visual Studio 08 Spell Check Addin?
- 27. Check Update Available App Store
- 28. restricción CHECK en múltiples columnas
- 29. check POST request with Fiddler
- 30. MacVim y Mercurial check-in
Puede usar el rasgo de tipo 'is_pod'. ¿Cuál es su definición de "seguro para copiar con' memcpy' "? Si un objeto tiene un miembro de datos de puntero que apunta a un objeto propio asignado dinámicamente, ¿es seguro "copiar con' memcpy' "? –
@James: la definición es, constructor de copia trivial, es decir, el tipo no tiene un constructor de copia definido por el usuario, ni ninguna clase base o miembro de datos con tal. – Puppy
La definición del estándar "Una clase trivially copyable es una clase que: - no tiene constructores de copia no triviales (12.8), - no tiene operadores de asignación de copia no triviales (13.5.3, 12.8), - tiene destructor trivial (12.4) ". – axe