typedef typename Tail::inUnion dummy;
Однако я не уверен, что реализация inUnion верна. Если я правильно понимаю, этот класс не должен быть создан, поэтому вкладка «fail» никогда не будет автоматически терпеть неудачу. Возможно, было бы лучше указать, находится ли тип в объединении или нет с простым булевым значением.
template
struct Contains; template struct Contains > { enum { result = Contains ::result }; }; template struct Contains > { enum { result = true }; }; template struct Contains { enum { result = false }; }; PS: Посмотрите на Boost :: Variant
PS2: посмотрите на typelists , особенно в книге Андрея Александреску: Modern C ++ Design
измените формулу QUERY
с этого:
=QUERY({Sheet1!A:C,
Sheet2!A:C}, "select *")
на это:
=QUERY({IFERROR(Sheet1!A:C, {"","",""}),
IFERROR(Sheet2!A:C, {"","",""})}, "select * where Col1 is not null")
Трудно дать вам точный совет, так как мы не знаем, как вы агрегируете свои данные, но я обычно делаю это, чтобы обернуть мои запросы IFERROR . Если запрос выполнен успешно, он ничего не изменит, но если он потерпит неудачу, он поймает ошибку и покажет либо ничего, либо все, что вы скажете для отображения.