Макрос препроцессора, чтобы сделать набор чисел

Я хочу создать макрос, который будет создавать общий указатель на неупорядоченный набор.

#include <memory>
#include <unordered_set>

#define MAKE_SET (x) make_shared<type_raw_set>(type_raw_set{x});

using std::make_shared;
using std::shared_ptr;
using std::unordered_set;

typedef const unordered_set<unsigned> type_raw_set;
typedef shared_ptr<type_raw_set> type_set;

type_set Snake = MAKE_SET(1,5,9,12,14,16,19,23,27,30,32,34) // does not compile

как мне сделать эту работу?

1 ответ

Решение

Передача переменного количества аргументов в макрос требует использования макроса variadic:

#define MAKE_SET(...) \
  make_shared<type_raw_set>(type_raw_set{__VA_ARGS__});
Другие вопросы по тегам