boostorg / boostorg/date_time

[MSVC][std:c++latest] boost\date_time build failed due to error C2666: 'boost::date_time::base_time<boost::posix_time::ptime,boost::posix_time::posix_time_system>::operator ==': overloaded functions have similar conversions

Open
#224 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
70
Forks
99
PR merge metrics
No merged PRs in 30d

Description

**Description:**
After the MSVC team implented [P2468R2 The Equality Operator You Are Looking For](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2468r2.html), the error we encountered when compiling Trojan(Trojan depends on boost/date_time) under /std:c++latest, the error is due to the operator== https://github.com/boostorg/date_time/blob/develop/include/boost/date_time/time.hpp#L137. In order to fix this the 'ref' log_entry::ref class need to add a corresponding 'operator!=' like so, could you please look this issue? Thanks.

**bool operator!=(const time_type& rhs) const
{
return time_system::is_equal(time_,rhs.time_);
}**

**Note:** this issue will be reproduced on next release version of VS(17.6 or later).

**Reproduction steps:**

1. open VS2019 x64 tools command
2. git clone https://github.com/trojan-gfw/trojan F:\gitP\trojan-gfw\trojan
3. set CL= /std:c++latest
4. cd F:\gitP\trojan-gfw\trojan &mkdir build_amd64 &cd F:\gitP\trojan-gfw\trojan\build_amd64
5. cmake -G "Visual Studio 16 2019" -A x64 -DCMAKE_SYSTEM_VERSION=10.0.18362.0 -DOPENSSL_ROOT_DIR=F:\tools\OpenSSL\64 -DBOOST_ROOT=F:\tools\boost_1_67_0\x64 -DCMAKE_BUILD_TYPE=Release -DENABLE_MYSQL=OFF -DBoost_USE_STATIC_LIBS=ON ..
6. msbuild /m /p:Platform=x64 /p:Configuration=Release trojan.sln /t:Rebuild

**Expected behavior:**
Build successfully.

**Actual behavior:**
[build (1).log](https://github.com/boostorg/date_time/files/10181577/build.1.log)
F:\tools\boost_1_67_0\x64\boost/asio/ssl/detail/io.hpp(152): error C2666: 'boost::date_time::base_timeboost::posix_time::ptime,boost::posix_time::posix_time_system::operator ==': overloaded functions have similar conversions
F:\tools\boost_1_67_0\x64\boost/date_time/time.hpp(126): note: could be 'bool boost::date_time::base_timeboost::posix_time::ptime,boost::posix_time::posix_time_system::operator ==(const boost::posix_time::ptime &) const'
F:\tools\boost_1_67_0\x64\boost/date_time/time.hpp(126): note: or 'bool boost::date_time::base_timeboost::posix_time::ptime,boost::posix_time::posix_time_system::operator ==(const boost::posix_time::ptime &) const' [synthesized expression 'y == x']
F:\tools\boost_1_67_0\x64\boost/bind/arg.hpp(48): note: or 'bool boost::operator ==(const boost::arg &,const boost::arg &)'
F:\tools\boost_1_67_0\x64\boost/asio/ssl/detail/io.hpp(152): note: 'bool boost::operator ==(const boost::arg &,const boost::arg &)': could not deduce template argument for 'const boost::arg &' from 'boost::posix_time::ptime'
F:\tools\boost_1_67_0\x64\boost/optional/detail/optional_relops.hpp(165): note: or 'bool boost::operator ==(boost::none_t,const boost::optional &) noexcept'

**Environment:**
VS version: VS2019(16.11.20)
Operating system: windows server 2019

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.