की अनुमति देता है मेरा मानना है कि बूस्ट की मेरी समझ :: mpl :: set मूलभूत रूप से त्रुटिपूर्ण होना चाहिए। मैंने सोचा कि यह केवल अद्वितीय प्रकार की अनुमति दी।बूस्ट एमपीएल सेट क्यों गैर-अद्वितीय प्रकार
लेकिन निम्न कोड को संकलित करता है:
#include <boost/mpl/set.hpp>
#include <boost/mpl/vector.hpp>
#include <boost/mpl/accumulate.hpp>
#include <boost/mpl/plus.hpp>
#include <boost/mpl/int.hpp>
#include <boost/mpl/placeholders.hpp>
#include <boost/mpl/sizeof.hpp>
#include <boost/mpl/assert.hpp>
using namespace boost::mpl;
typedef set<long,float,long> my_set; //long repeated in set?
typedef vector<long,float,long> my_vec; //seems reasonable
typedef accumulate<
my_set
, int_<0>
, plus<_1, sizeof_<_2>>
>::type set_size;
typedef accumulate<
my_vec
, int_<0>
, plus<_1, sizeof_<_2>>
>::type vec_size;
BOOST_MPL_ASSERT_RELATION(vec_size::value, ==, sizeof(long)+sizeof(float)+sizeof(long));
//why does the following line compile?
//shouldn't the size be sizeof(long)+sizeof(float) instead?
BOOST_MPL_ASSERT_RELATION(set_size::value, ==, sizeof(long)+sizeof(float)+sizeof(long));
'टाइपपीफ सेट <लम्बा, फ्लोट, लम्बा> my_vec;' 'टाइपेडफ वेक्टर <लंबा, फ्लोट, लंबा> my_vec;' होना चाहिए? – Mankarse
हाँ –