如何讓編譯器創建臨時對象,在未定義函數時對其使用默認構造函數?避免最令人頭痛的解析
struct B {};
template<class T> struct C {};
template<class T,class T1>
struct A
{
A(const T& t,const T1& t1): m_t(t),m_t1(t1)
{
std::cout << __PRETTY_FUNCTION__ << "\n";
}
T m_t;
T1 m_t1;
};
int main() {
A< B , C<B> > a0(B() , C<B>()); // Function definition
A< B , C<B> > a1(B b , C<B> c); // dito, *at least A(const T& t,const T1& t1) not called
}
使用更多括號,比如'(B())',或者在C++ 11中使用'B {}'。 –
@ R.MartinhoFernandes:爲什麼這是一個評論? :( –