Это может быть глупый вопрос, но я совершенно не имею представления о приглашении.
Код находится в файле .cpp
template <typename T> void foo2(T){}
template void foo2<int>(int);
VS2017 постоянно говорит мне, что: Определение функции для функции 'foo2' не найдено. Тем не менее, код на самом деле работает в VS2017, никаких сообщений об ошибках, если я его запускаю. Я не знаю, является ли это проблемой, связанной с IDE, или это проблема кода. Как это довольно раздражает, кто-нибудь знает, почему появляется подсказка и как ее исправить? Спасибо!
========= Update ===========
Вот полный код (переместите экземпляр в файл .h, но проблема остается той же):
test.h
#pragma once
template <typename T> void foo2(T);
template void foo2<int>(int);
test.cpp
#include "test.h"
#include "stdafx.h"
template <typename T>void foo2(T){}
основной файл
#include "stdafx.h"
#include "test.h"
int main()
{
int a = 1;
foo2(a);
}
Я склонен полагать, что это специфичный для IDE вопрос. Если я попрошу VS показать потенциальное исправление, он создаст следующий код в файле .cpp:
template void foo2(int)
{
return template void();
}
что определенно не так. Даже не может пройти компиляцию.