Zastanawiam się, czy istnieją jakiekolwiek ograniczenia dotyczące tego, gdzie funkcje i metody constexpr muszą być zadeklarowane, tak jak istnieją funkcje i metody inline.Zgłaszanie funkcji lub metod constexpr
Wiem, że wbudowane funkcje lub metody muszą być zapisane w plikach nagłówkowych, aby dać kompilatorowi dostęp do ich definicji, gdzie są wywoływane. miałoby sens, jeśli było coś podobnego do constexpr, ale nie uda się znaleźć coś w tej kwestii ...
Więc w zasadzie moje pytania są następujące:
mogę napisać definicje constexpr działa w pliku nagłówkowym bez ryzyka duplikowania symbolu?
Czy mogę oddzielić deklarację od definicji funkcji lub metod constexpr?
Może to być powiązane z http: // stackoverflow.com/questions/4748083/when-should-you-use-constexpr-capability-in-c11 – alediaferia
[dcl.constexpr]/2 Funkcje 'constexpr' i konstruktory' constexpr' są niejawnie 'inline', co sugeruje, że * potrzebujesz * definicji w każdej jednostce tłumaczeniowej (pliku źródłowym), w której funkcja jest używana, i możesz mieć wiele definicji w różnych plikach źródłowych pod warunkiem, że są one równoważne (zobacz ODR). – dyp
Powiązane: http://stackoverflow.com/questions/14391272/does-constexpr-imply-inline – dyp