According to the definition of odr-used
:
Informally, an object is odr-used if its value is read (unless it is a compile time constant) or written, its address is taken, or a reference is bound to it; ..... If an object, a reference or a function is odr-used, its definition must exist somewhere in the program; a violation of that is usually a link-time error.
But here in visual studio 2015:
#include <iostream>
using namespace std;
class A{
public:
static const int k=666;
};
int main() {
const int&s=A::k;//no warning?
cout << &A::k << endl;//no warning,no error?
return 0;
}
According to cppref:
a definition outside of class is required if it is odr-used
Aucun commentaire:
Enregistrer un commentaire