Size: a a a

2021 July 29

FO

FORTRAN ONE LOVE in codingteam
Я про этою
источник

FO

FORTRAN ONE LOVE in codingteam
*Это.
источник

КП

Крылатый Пегас... in codingteam
А, канал с лисиками.
источник

FO

FORTRAN ONE LOVE in codingteam
Ага..
источник

c

codingteam@cjr in codingteam
(<*>).(<*>)


example-type.cpp:(.text+0x0): multiple definition of `FromJsonParser<JsonObject> from_json<JsonObject>()'; build-clang/main.o:main.cpp:(.text+0x0): first defined here
/nix/store/sgrwh6jsrshrnicqi67fck336q6ldh2d-binutils-2.35.1/bin/ld: build-clang/json/data-modeling/example-type.o: in function `FromJsonParser<JsonString> from_json<JsonString>()':
example-type.cpp:(.text+0x100): multiple definition of `FromJsonParser<JsonString> from_json<JsonString>()'; build-clang/main.o:main.cpp:(.text+0x100): first defined here
/nix/store/sgrwh6jsrshrnicqi67fck336q6ldh2d-binutils-2.35.1/bin/ld: build-clang/json/data-modeling/example-type.o: in function `FromJsonParser<ExampleTypePhoneNumber> from_json<ExampleTypePhoneNumber>()':
example-type.cpp:(.text+0x200): multiple definition of `FromJsonParser<ExampleTypePhoneNumber> from_json<ExampleTypePhoneNumber>()'; build-clang/main.o:main.cpp:(.text+0x200): first defined here
источник

c

codingteam@cjr in codingteam
(<*>).(<*>)
нашёл по интернетам, что нужно делать вот так:

template <>
FromJsonParser<ExampleTypePhoneNumber> from_json<ExampleTypePhoneNumber>()
{

auto parse_string = function(from_json_string) ^ from_json<JsonString>();

т.е. добавлять тип в параметры темплейта: from_json<ExampleTypePhoneNumber>()
источник

c

codingteam@cjr in codingteam
(<*>).(<*>)
но это не помогает
источник

c

codingteam@cjr in codingteam
(<*>).(<*>)

template <typename T>
void doStuff() {}

template <>
void doStuff<DefinedClass>() { /* function body here */ }

нашёл вот такой пример
источник

c

codingteam@cjr in codingteam
(<*>).(<*>)
«дженерик» у меня вот такой:

template <typename T>
FromJsonParser<T> from_json();
источник

c

codingteam@cjr in codingteam
Minoru
состыковался!
источник

EP

Egor Pugin in codingteam
чпок?
источник

c

codingteam@cjr in codingteam
(<*>).(<*>)

» Intuitively, when you fully specialize something, it doesn't depend on a template parameter any more -- so unless you make the specialization inline, you need to put it in a .cpp file instead of a .h or you end up violating the one definition rule as David says. Note that when you partially specialize templates, the partial specializations do still depend on one or more template parameters, so they still go in a .h file.
источник

c

codingteam@cjr in codingteam
(<*>).(<*>)
это что, мне специализированные функции нельзя за пределы cpp файла высовывать? либо всё инлайнить?
источник

EP

Egor Pugin in codingteam
скорее всего да
источник

c

codingteam@cjr in codingteam
Minoru
да, всё так: либо определять как inline в заголовочном файле, либо писать в исходном файле (но только в одном)
источник

КП

Крылатый Пегас... in codingteam
Йап
источник

КП

Крылатый Пегас... in codingteam
Вот именно!)
источник

c

codingteam@cjr in codingteam
(<*>).(<*>)

» [16:43:41] <Minoru> да, всё так: либо определять как inline в заголовочном файле, либо писать в исходном файле (но только в одном)
а если я в cpp-файле определяю template<>... оно разве в код вообще превратится?
источник

c

codingteam@cjr in codingteam
Minoru
(<*>).(<*>): если только определяешь — то нет. Чтобы темплейт сгенерировал код (инстанциировался), его нужно использовать
источник

c

codingteam@cjr in codingteam
Minoru
Прочёл у Таненбаума про Itanium
@
Зашёл в Википедию глянуть, как нынче дела у этой архитектуры
@
Discontinued July 2021, Last processor shipped July 29th 2021
источник