Boost logo

Boost :

Subject: [boost] [chrono][timer][release] Non-inline functions in inlined headers
From: Daniel James (dnljms_at_[hidden])
Date: 2017-12-13 10:24:53


Hi,

We've had a link problem reported. for this code on Visual Studio,
using auto-linking:

#include "boost\chrono.hpp"
#include "boost\timer\timer.hpp"

int main()
{
    auto now = boost::chrono::steady_clock::now();
    boost::timer::cpu_timer cput;
    return 0;
}

I haven't got the binaries installed yet, so I haven't reproduced it,
but I think it's caused because timer now includes the chrono headers
using BOOST_CHRONO_HEADER_ONLY, and in the chrono inlined headers not
all functions are BOOST_CHRONO_INLINE. It looks like this problem was
always in chrono, but BOOST_CHRONO_HEADER_ONLY was widely used enough
for it to be detected.

I'd quite like to fix this for 1.66.0, which requires either reverting
the change to timer, or fixing the problem in chrono. The error is in
chrono, but I'm more inclined to revert the change in timer for this
release, as it's a less disruptive way of quickly fixing the problem.

https://github.com/boostorg/timer/pull/5


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk