Аргументы шаблона Variadic являются жадными, поэтому, если вы попытаетесь явно указать аргументы шаблона для шаблона, который имеет переменный аргумент, после того, как явные аргументы начнут выделяться пакету переменных, все остальные аргументы выделяются этому пакету. В этом случае A2
не является типом, поэтому, когда компилятор пытается выделить его для пакета Ts...
, это вызывает ошибку.
Вы можете перегрузить ваш шаблон, указав enum
в качестве первого параметра:
template <A a,typename...Ts >
void foo(Ts...ps) { std::cout << sizeof...(ps); }
template <typename...Ts>
void foo(Ts...ps) { foo<A2>(ps...); }
foo<int,int>(1,2); // this compiles
foo<A2,int,int>(1,2); // this compiles
select * from tempdb.sys.columns where object_id =
object_id('tempdb..#mytemptable');
select *
from tempdb.INFORMATION_SCHEMA.COLUMNS
where table_name like '#MyTempTable%'
Временные таблицы определены в «tempdb», а имена таблиц «искажены».
Этот запрос должен помочь:
select c.*
from tempdb.sys.columns c
inner join tempdb.sys.tables t ON c.object_id = t.object_id
where t.name like '#MyTempTable%'
Marc