list_of यह संकलित:का उपयोग को बढ़ावा देने :: आवंटित ::
std::vector<int> value = boost::assign::list_of(1)(2);
लेकिन इस:
Constructor(std::vector<int> value)
{
}
Constructor (boost::assign::list_of(1)(2));
वहाँ वेक्टर निर्माता को पारित कर दिया आरंभ के लिए एक एक लाइनर समाधान है?
अभी भी बेहतर है, बजाय एक संदर्भ लेने के द्वारा एक वर्ग चर करने के लिए निर्माता प्रतियां यदि:
enum Foo
{
FOO_ONE, FOO_TWO
};
class Constructor
{
public:
Constructor(const std::vector<Foo>& value){}
};
Constructor c(std::vector<Foo>(boost::assign::list_of(FOO_ONE)));
मैं:
Constructor(std::vector<int>& value)
{
_value = value;
}
अद्यतन
अगर मैं निम्नलिखित की कोशिश संकलक त्रुटि:
error C2440: '<function-style-cast>' : cannot convert from 'boost::assign_detail::generic_list<T>' to 'std::vector<_Ty>'
1> with
1> [
1> T=Foo
1> ]
1> and
1> [
1> _Ty=Foo
1> ]
1> No constructor could take the source type, or constructor overload resolution was ambiguous
क्या आप संकलक त्रुटि संदेश दे सकते हैं? –
@ केविन मॉलकार्ड जोड़ा गया कंपाइलर त्रुटि – Baz
[ऐसा लगता है कि यह बग है] (https://svn.boost.org/trac/boost/ticket/7364)। –