Skip to content

Commit 79f967c

Browse files
authored
Merge pull request #14 from arookas/master
Add MSVC EBO fix to remaining classes
2 parents 122743a + ba883d7 commit 79f967c

File tree

1 file changed

+17
-17
lines changed

1 file changed

+17
-17
lines changed

include/tao/operators.hpp

+17-17
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
#ifndef TAO_OPERATORS_NO_RVALUE_REFERENCE_RESULTS
3535
#define TAO_OPERATORS_BASIC_OP( name, op ) \
3636
template< typename T, typename U = T > \
37-
class name /* NOLINT */ \
37+
class TAO_OPERATORS_BROKEN_EBO name /* NOLINT */ \
3838
{ \
3939
friend T operator op( const T& lhs, const U& rhs ) noexcept( noexcept( T( lhs ), std::declval< T& >() op## = rhs, T( std::declval< T& >() ) ) ) \
4040
{ \
@@ -65,7 +65,7 @@
6565
#else
6666
#define TAO_OPERATORS_BASIC_OP( name, op ) \
6767
template< typename T, typename U = T > \
68-
class name \
68+
class TAO_OPERATORS_BROKEN_EBO name \
6969
{ \
7070
TAO_OPERATORS_NODISCARD friend T operator op( const T& lhs, const U& rhs ) noexcept( noexcept( T( lhs ), std::declval< T& >() op## = rhs, T( std::declval< T& >() ) ) ) \
7171
{ \
@@ -99,7 +99,7 @@
9999

100100
#define TAO_OPERATORS_BASIC_OP_LEFT( name, op ) \
101101
template< typename T, typename U > \
102-
class name##_left \
102+
class TAO_OPERATORS_BROKEN_EBO name##_left \
103103
{ \
104104
TAO_OPERATORS_NODISCARD friend T operator op( const U& lhs, const T& rhs ) noexcept( noexcept( T( lhs ), std::declval< T& >() op## = rhs, T( std::declval< T& >() ) ) ) \
105105
{ \
@@ -133,7 +133,7 @@
133133
#ifndef TAO_OPERATORS_NO_RVALUE_REFERENCE_RESULTS
134134
#define TAO_OPERATORS_BASIC_OP_COMMUTATIVE( name, op ) \
135135
template< typename T, typename U = T > \
136-
class commutative_##name \
136+
class TAO_OPERATORS_BROKEN_EBO commutative_##name \
137137
{ \
138138
TAO_OPERATORS_NODISCARD friend T operator op( const T& lhs, const U& rhs ) noexcept( noexcept( T( lhs ), std::declval< T& >() op## = rhs, T( std::declval< T& >() ) ) ) \
139139
{ \
@@ -189,7 +189,7 @@
189189
}; \
190190
\
191191
template< typename T > \
192-
class commutative_##name< T > \
192+
class TAO_OPERATORS_BROKEN_EBO commutative_##name< T > \
193193
{ \
194194
TAO_OPERATORS_NODISCARD friend T operator op( const T& lhs, const T& rhs ) noexcept( noexcept( T( lhs ), std::declval< T& >() op## = rhs, T( std::declval< T& >() ) ) ) \
195195
{ \
@@ -219,7 +219,7 @@
219219
#else
220220
#define TAO_OPERATORS_BASIC_OP_COMMUTATIVE( name, op ) \
221221
template< typename T, typename U = T > \
222-
class commutative_##name \
222+
class TAO_OPERATORS_BROKEN_EBO commutative_##name \
223223
{ \
224224
TAO_OPERATORS_NODISCARD friend T operator op( const T& lhs, const U& rhs ) noexcept( noexcept( T( lhs ), std::declval< T& >() op## = rhs, T( std::declval< T& >() ) ) ) \
225225
{ \
@@ -279,7 +279,7 @@
279279
}; \
280280
\
281281
template< typename T > \
282-
class commutative_##name< T > \
282+
class TAO_OPERATORS_BROKEN_EBO commutative_##name< T > \
283283
{ \
284284
TAO_OPERATORS_NODISCARD friend T operator op( const T& lhs, const T& rhs ) noexcept( noexcept( T( lhs ), std::declval< T& >() op## = rhs, T( std::declval< T& >() ) ) ) \
285285
{ \
@@ -316,7 +316,7 @@ namespace tao
316316
namespace operators
317317
{
318318
template< typename T, typename U = T >
319-
class equality_comparable
319+
class TAO_OPERATORS_BROKEN_EBO equality_comparable
320320
{
321321
TAO_OPERATORS_NODISCARD friend TAO_OPERATORS_CONSTEXPR bool operator!=( const T& lhs, const U& rhs ) noexcept( noexcept( static_cast< bool >( lhs == rhs ) ) )
322322
{
@@ -335,7 +335,7 @@ namespace tao
335335
};
336336

337337
template< typename T >
338-
class equality_comparable< T >
338+
class TAO_OPERATORS_BROKEN_EBO equality_comparable< T >
339339
{
340340
TAO_OPERATORS_NODISCARD friend TAO_OPERATORS_CONSTEXPR bool operator!=( const T& lhs, const T& rhs ) noexcept( noexcept( static_cast< bool >( lhs == rhs ) ) )
341341
{
@@ -344,7 +344,7 @@ namespace tao
344344
};
345345

346346
template< typename T, typename U = T >
347-
class less_than_comparable
347+
class TAO_OPERATORS_BROKEN_EBO less_than_comparable
348348
{
349349
TAO_OPERATORS_NODISCARD friend TAO_OPERATORS_CONSTEXPR bool operator<=( const T& lhs, const U& rhs ) noexcept( noexcept( static_cast< bool >( lhs > rhs ) ) )
350350
{
@@ -378,7 +378,7 @@ namespace tao
378378
};
379379

380380
template< typename T >
381-
class less_than_comparable< T >
381+
class TAO_OPERATORS_BROKEN_EBO less_than_comparable< T >
382382
{
383383
TAO_OPERATORS_NODISCARD friend TAO_OPERATORS_CONSTEXPR bool operator>( const T& lhs, const T& rhs ) noexcept( noexcept( static_cast< bool >( rhs < lhs ) ) )
384384
{
@@ -404,7 +404,7 @@ namespace tao
404404
};
405405

406406
template< typename T, typename U = T >
407-
class equivalent
407+
class TAO_OPERATORS_BROKEN_EBO equivalent
408408
{
409409
TAO_OPERATORS_NODISCARD friend TAO_OPERATORS_CONSTEXPR bool operator==( const T& lhs, const U& rhs ) noexcept( noexcept( static_cast< bool >( lhs < rhs ), static_cast< bool >( lhs > rhs ) ) )
410410
{
@@ -413,7 +413,7 @@ namespace tao
413413
};
414414

415415
template< typename T >
416-
class equivalent< T >
416+
class TAO_OPERATORS_BROKEN_EBO equivalent< T >
417417
{
418418
TAO_OPERATORS_NODISCARD friend TAO_OPERATORS_CONSTEXPR bool operator==( const T& lhs, const T& rhs ) noexcept( noexcept( static_cast< bool >( lhs < rhs ) ) )
419419
{
@@ -422,7 +422,7 @@ namespace tao
422422
};
423423

424424
template< typename T, typename U = T >
425-
class partially_ordered
425+
class TAO_OPERATORS_BROKEN_EBO partially_ordered
426426
{
427427
TAO_OPERATORS_NODISCARD friend TAO_OPERATORS_CONSTEXPR bool operator<=( const T& lhs, const U& rhs ) noexcept( noexcept( static_cast< bool >( lhs < rhs ), static_cast< bool >( lhs == rhs ) ) )
428428
{
@@ -456,7 +456,7 @@ namespace tao
456456
};
457457

458458
template< typename T >
459-
class partially_ordered< T >
459+
class TAO_OPERATORS_BROKEN_EBO partially_ordered< T >
460460
{
461461
TAO_OPERATORS_NODISCARD friend TAO_OPERATORS_CONSTEXPR bool operator>( const T& lhs, const T& rhs ) noexcept( noexcept( static_cast< bool >( rhs < lhs ) ) )
462462
{
@@ -608,7 +608,7 @@ namespace tao
608608
};
609609

610610
template< typename T >
611-
class incrementable
611+
class TAO_OPERATORS_BROKEN_EBO incrementable
612612
{
613613
TAO_OPERATORS_NODISCARD friend T operator++( T& arg, int /*unused*/ ) noexcept( noexcept( T( arg ), ++arg, T( std::declval< T >() ) ) ) // NOLINT
614614
{
@@ -619,7 +619,7 @@ namespace tao
619619
};
620620

621621
template< typename T >
622-
class decrementable
622+
class TAO_OPERATORS_BROKEN_EBO decrementable
623623
{
624624
TAO_OPERATORS_NODISCARD friend T operator--( T& arg, int /*unused*/ ) noexcept( noexcept( T( arg ), --arg, T( std::declval< T >() ) ) ) // NOLINT
625625
{

0 commit comments

Comments
 (0)