これは奇妙です(MSVC2012):
using namespace std;
class MyClass
{
public:
int membervar;
};
template< int (MyClass::*var) > struct A
{
void print()
{
cout << var;
}
};
int main(int argc, char *argv[])
{
struct A <&MyClass::membervar> object;
object.print();
}
このコードはコンパイルされ、実際に「1」を出力します。どこで手に入るの?membervarはどのオブジェクトに属しますか?データメンバーにアクセスするにはオブジェクトが必要だと思いました