【发布时间】:2012-11-06 11:07:52
【问题描述】:
如何让编译器创建临时对象,在它们上使用默认构造函数而不定义函数?
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:为什么会有这样的评论? :(
标签: c++ most-vexing-parse