Описание тега implicit-instantiation

В языке C++ неявное создание экземпляра - это процесс создания класса или функции из шаблона класса или шаблона функции, когда этот конкретный тип не был создан явно.
1 ответ

Шаблон функции с неиспользуемым параметром шаблона

template<typename T> struct a { using type = int; typename T::type i; }; template<typename T, typename = a<T>> void f1(T) {} template<typename T, typename = typename a<T>::type> void f2(T) {} int main() { f1<int>(…
1 ответ

Является ли специализация неявно созданной, если она уже была неявно создана?

Вопрос в названии достаточно понятен. Чтобы быть более конкретным, рассмотрим следующий пример: #include <type_traits> template <typename T> struct is_complete_helper { template <typename U> static auto test(U*) -> std::integral…
1 ответ

Вызывает ли `использование` в шаблонном классе создание экземпляра?

Этот вопрос заключается в том, как использовать инициализацию глобальной переменной для достижения некоторого побочного эффекта перед main() выполняется (например, регистрация фабричного класса перед main()). Это может быть сложно, когда задействова…
1 ответ

Создает ли неявное создание экземпляра шаблона функции «используется как параметр шаблона, не являющийся типом»?

Я хочу написать шаблон класса Mкоторый принимает неполный тип в качестве параметра шаблона. Но я тоже хочу C имеет некоторые черты, когда он в конечном итоге будет определен. Гарантирован ли этот код для компиляции, если определено (FLAG), и не выпо…
1 ответ

Является ли использование в неиспользуемом инициализаторе члена по умолчанию все еще использованием odr?

Является ли использование в инициализаторе элемента по умолчанию по-прежнему odr-использованием, даже если инициализатор члена по умолчанию не используется каким-либо конструктором? Например, является ли эта программа неправильной, потому что g<A…