class A
{
public:
        A(){}
};

class B
{
public:
        B(A param){}
};

void Func(A param){}


void main()
{
        A a;
        B b(a);

        Func(A());

//        B b2(A());
//        b2.~B();
}

주석으로 처리한 부분을 주석을 풀고 컴파일하면

B b2(A()); 라인에서
main.cpp : warning C4930: 'B bb(A (__cdecl *)(void))': 프로토타입 함수가 호출되지 않았습니다. 변수 정의로 사용하려고 한 것은 아닌지 확인하십시오.
라는 경고가  뜨고

b2.~B();
이 라인에서
main.cpp : error C2325: 'B' : '.~' 오른쪽에 올 수 있는 형식이 아닙니다. 'overloaded-function'이(가) 필요합니다.
에러가 발생하는데 b2를 클래스로 보지 않는거  같아요.

경고 메세지를 보면 B b2(A());  이걸 함수 프로토타입으로 봐버리는 거 같은데 도대체 왜 어떻게 그럴 수 있죠? 컴파일러 바보 ㅠㅠ

해결 방법은 없나요?

꼭 이런식으로 해야하나요?
        A a;
        B b(a);

좀 알려주세용ㅠㅠ