Сроки выражения компиляции хороши, потому что вы можете использовать их для специализирования шаблонов. Так, например, кортежи можно получить, используя выражение времени компиляции с помощью метода std::get
.Функция, которая принимает только известные выражения времени компиляции?
std::cout << std::get<0>(my_tuple) << std::endl;
Теперь вышеназванное выражение довольно уродливое. Я пытаюсь разработать какую-то кортежей себя (в надежде сделать это, чтобы превратить их в компиляции словарей время), так что, скажем, они выставляют метод в форме:
my_dict.get<0>();
Теперь, что я хотел сделать это, чтобы заменить это на оператор []. Мне было интересно, возможно ли это вообще. Прежде всего, я бы не знал, как выбирать только константы, компилировать известные временем выражения как параметры для моего оператора. Более того, тип возврата будет зависеть от значения константного выражения.
С определить, однако, я могу стать ближе к тому, что я хочу что-то вроде
#define item(x) get<x>()
, так что я могу затем использовать
my_dict.item(0)
Есть ли способ, чтобы получить что-то лучше, чем это?
Я не понимаю вашу цель, вообще. Примите аргумент только как аргумент шаблона. Проблема решена ... –
Пользовательские литералы, которые легко определяют объекты 'std :: integral_constant'? http://coliru.stacked-crooked.com/a/f8450185699979be – dyp
@LightnessRacesinOrbit: вы не можете полностью превратить аргумент 'operator []' в аргумент шаблона. – doublep