Я сделал базовый проект C ++, который использует библиотеку FMT для печати "Привет, мир!":
#include
int main() {
fmt::print("Hello, {}!", "World");
return 0;
}
Этот код компилируется и запускается, но затмевает ошибку:
, когда я использую определение, определяю, по определению, по определению, по определению, по определению, по определению, по определению, по определению, по определению, по определению, по определению, по определению, по определению, по определению, по определению, по определению, по определению, по определению IRREANT in in rekant in rekant. Path/to/fmt/base.h :
template
FMT_INLINE void print(FILE* f, format_string fmt, T&&... args)
< /code>
Предполагаемое определение < /p>
template
FMT_INLINE void print(format_string fmt, T&&... args)
< /code>
находится прямо над ним в том же файле. Если я изменю свою операцию печати с помощью явного параметра шаблона (fmt::print("Hello, {}!", "World");), ошибка уходит. Но, как я уже сказал, код компилирует и работает хорошо даже без него - не только в командной строке, но и в Eclipse. Кажется, существует какое -то несоответствие между компиляторами, используемыми для проверки строительства и синтаксиса, или стандартами C ++, или вариантами компилятора, или ...? Я пробовал чистое строительство и перезагрузку Eclipse, и предложения здесь, но они не работали. Пример следует за этим учебником. < /P>
CMakeLists.txt:
cmake_minimum_required(VERSION 3.10)
project(HelloWorld)
find_package(fmt CONFIG REQUIRED)
add_executable(HelloWorld helloworld.cpp)
target_link_libraries(HelloWorld PRIVATE fmt::fmt)
< /code>
vcpkg.json
{
"dependencies": [
"fmt"
]
}
< /code>
helloworld.cpp
#include
int main() {
fmt::print("Hello, {}!", "World");
return 0;
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... s-in-scope