Mi stavo chiedendo ... Diciamo che ho una struttura POD in C++. Se inserissi uno static_assert
lì dentro, rovinerebbe il fatto che sia un POD?Un static_assert in un POD rovinerà il POD?
So che posso facilmente mettere da qualche altra parte, sto solo chiedendo perché mi interessa se devo o non devo fare questo ...
In altre parole (più specifici):
#include <iostream>
#include <type_traits>
struct A
{
void* ptr;
static_assert(sizeof(void*) == 8, "Pointer should have size 8; platform unsupported");
};
int main()
{
// Is it guaranteed that this will evaluate to 'true'?
std::cout << std::is_pod<A>::value << std::endl;
}
Non credo, 'static_assert' prende il via in fase di compilazione, non credo che sia anche incorporato nel binario risultante .. Non ho lo standard accanto a me per ottenere una risposta accurata –
Immagino' std :: is_pod' non può davvero essere sbagliato. – Quentin
@DavidHaim Certo, questo è il punto di 'static_assert'. Ancora non è definito come implementarlo - quindi se generasse un membro virtuale per fare il suo lavoro, potrebbe teoricamente rovinare il 'is_pod'. (Non che io capissi perché lo farebbe, ma questa è un'altra storia ...) Giusto? – atlaste