我正在观看以下视频
这里提到,g++会对以下代码报错:
#include<vector>
#include<typeinfo>
#include<iostream>
struct S
{
std::vector<std::string> b ;
};
int main()
{
S s;
std::cout << typeid(S::b).name();
}
error: invalid use of non-static data member ‘S::b’
但是在MSVC和Clang下我没有遇到这种错误。谁是正确的,为什么呢?而且为什么变成这样?
typeid(&S::b).name();
之后的结果正确吗?
typeid
通常不是未求值的上下文。 - Ben Voigt