gpt4 book ai didi

c++ - 避免最烦人的解析

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:04:45 25 4
gpt4 key购买 nike

如何让编译器创建临时对象,在不定义函数的情况下对它们使用默认构造函数?

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
}

最佳答案

您可以将其中一个参数包裹在一组额外的括号中,以阻止它被解析为函数声明:

A< B , C<B> > a0( (B()) , C<B>() );

或者更好的是,如果您可以访问 C++11 编译器,请使用大括号初始化:

A< B , C<B> > a0{ B() , C<B>() };

关于c++ - 避免最烦人的解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13249694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com