@@ -129,7 +129,7 @@ using underlying_type
129
129
// / \group is_strong_typedef
130
130
// / Whether a type `T` is a [ts::strong_type]()
131
131
template <class T , typename = detail::void_t <>>
132
- struct TYPE_SAFE_MSC_EMPTY_BASES is_strong_typedef : std::false_type
132
+ struct is_strong_typedef : std::false_type
133
133
{};
134
134
135
135
// / \group is_strong_typedef
@@ -425,43 +425,43 @@ namespace strong_typedef_op
425
425
// / \exclude
426
426
#define TYPE_SAFE_DETAIL_MAKE_STRONG_TYPEDEF_OP (Name, Op ) \
427
427
template <class StrongTypedef > \
428
- struct Name \
428
+ struct TYPE_SAFE_MSC_EMPTY_BASES Name \
429
429
{}; \
430
430
TYPE_SAFE_DETAIL_MAKE_OP (Op, Name, StrongTypedef) \
431
431
TYPE_SAFE_DETAIL_MAKE_OP_COMPOUND (Op## =, Name) \
432
432
template <class StrongTypedef , typename Other> \
433
- struct mixed_ ##Name \
433
+ struct TYPE_SAFE_MSC_EMPTY_BASES mixed_##Name \
434
434
{}; \
435
435
TYPE_SAFE_DETAIL_MAKE_OP_MIXED (Op, mixed_##Name, StrongTypedef) \
436
436
TYPE_SAFE_DETAIL_MAKE_OP_COMPOUND_MIXED (Op## =, mixed_##Name) \
437
437
template <class StrongTypedef , typename Other> \
438
- struct mixed_ ##Name##_noncommutative \
438
+ struct TYPE_SAFE_MSC_EMPTY_BASES mixed_##Name##_noncommutative \
439
439
{}; \
440
440
TYPE_SAFE_DETAIL_MAKE_OP_STRONGTYPEDEF_OTHER (Op, mixed_##Name##_noncommutative, StrongTypedef) \
441
441
TYPE_SAFE_DETAIL_MAKE_OP_COMPOUND_MIXED (Op## =, mixed_##Name##_noncommutative)
442
442
443
443
template <class StrongTypedef >
444
- struct equality_comparison
444
+ struct TYPE_SAFE_MSC_EMPTY_BASES equality_comparison
445
445
{};
446
446
TYPE_SAFE_DETAIL_MAKE_OP (==, equality_comparison, bool )
447
447
TYPE_SAFE_DETAIL_MAKE_OP (!=, equality_comparison, bool )
448
448
449
449
template <class StrongTypedef , typename Other>
450
- struct mixed_equality_comparison
450
+ struct TYPE_SAFE_MSC_EMPTY_BASES mixed_equality_comparison
451
451
{};
452
452
TYPE_SAFE_DETAIL_MAKE_OP_MIXED (==, mixed_equality_comparison, bool )
453
453
TYPE_SAFE_DETAIL_MAKE_OP_MIXED (!=, mixed_equality_comparison, bool )
454
454
455
455
template <class StrongTypedef >
456
- struct relational_comparison
456
+ struct TYPE_SAFE_MSC_EMPTY_BASES relational_comparison
457
457
{};
458
458
TYPE_SAFE_DETAIL_MAKE_OP (<, relational_comparison, bool )
459
459
TYPE_SAFE_DETAIL_MAKE_OP (<=, relational_comparison, bool )
460
460
TYPE_SAFE_DETAIL_MAKE_OP (>, relational_comparison, bool )
461
461
TYPE_SAFE_DETAIL_MAKE_OP (>=, relational_comparison, bool )
462
462
463
463
template <class StrongTypedef , typename Other>
464
- struct mixed_relational_comparison
464
+ struct TYPE_SAFE_MSC_EMPTY_BASES mixed_relational_comparison
465
465
{};
466
466
TYPE_SAFE_DETAIL_MAKE_OP_MIXED (<, mixed_relational_comparison, bool )
467
467
TYPE_SAFE_DETAIL_MAKE_OP_MIXED (<=, mixed_relational_comparison, bool )
@@ -475,7 +475,7 @@ namespace strong_typedef_op
475
475
TYPE_SAFE_DETAIL_MAKE_STRONG_TYPEDEF_OP (modulo, %)
476
476
477
477
template <class StrongTypedef >
478
- struct explicit_bool
478
+ struct TYPE_SAFE_MSC_EMPTY_BASES explicit_bool
479
479
{
480
480
// / \exclude
481
481
explicit constexpr operator bool () const
@@ -486,7 +486,7 @@ namespace strong_typedef_op
486
486
};
487
487
488
488
template <class StrongTypedef >
489
- struct increment
489
+ struct TYPE_SAFE_MSC_EMPTY_BASES increment
490
490
{
491
491
// / \exclude
492
492
TYPE_SAFE_CONSTEXPR14 StrongTypedef& operator ++()
@@ -506,7 +506,7 @@ namespace strong_typedef_op
506
506
};
507
507
508
508
template <class StrongTypedef >
509
- struct decrement
509
+ struct TYPE_SAFE_MSC_EMPTY_BASES decrement
510
510
{
511
511
// / \exclude
512
512
TYPE_SAFE_CONSTEXPR14 StrongTypedef& operator --()
@@ -526,7 +526,7 @@ namespace strong_typedef_op
526
526
};
527
527
528
528
template <class StrongTypedef >
529
- struct unary_plus
529
+ struct TYPE_SAFE_MSC_EMPTY_BASES unary_plus
530
530
{};
531
531
532
532
// / \exclude
@@ -543,7 +543,7 @@ namespace strong_typedef_op
543
543
}
544
544
545
545
template <class StrongTypedef >
546
- struct unary_minus
546
+ struct TYPE_SAFE_MSC_EMPTY_BASES unary_minus
547
547
{};
548
548
549
549
// / \exclude
@@ -581,7 +581,7 @@ namespace strong_typedef_op
581
581
{};
582
582
583
583
template <class StrongTypedef >
584
- struct complement
584
+ struct TYPE_SAFE_MSC_EMPTY_BASES complement
585
585
{};
586
586
587
587
// / \exclude
@@ -609,7 +609,7 @@ namespace strong_typedef_op
609
609
{};
610
610
611
611
template <class StrongTypedef , typename IntT>
612
- struct bitshift
612
+ struct TYPE_SAFE_MSC_EMPTY_BASES bitshift
613
613
{};
614
614
TYPE_SAFE_DETAIL_MAKE_OP_MIXED (<<, bitshift, StrongTypedef)
615
615
TYPE_SAFE_DETAIL_MAKE_OP_MIXED (>>, bitshift, StrongTypedef)
@@ -618,7 +618,7 @@ namespace strong_typedef_op
618
618
619
619
template <class StrongTypedef , typename Result, typename ResultPtr = Result*,
620
620
typename ResultConstPtr = const Result*>
621
- struct dereference
621
+ struct TYPE_SAFE_MSC_EMPTY_BASES dereference
622
622
{
623
623
// / \exclude
624
624
Result& operator *()
@@ -650,7 +650,7 @@ namespace strong_typedef_op
650
650
};
651
651
652
652
template <class StrongTypedef , typename Result, typename Index = std::size_t >
653
- struct array_subscript
653
+ struct TYPE_SAFE_MSC_EMPTY_BASES array_subscript
654
654
{
655
655
// / \exclude
656
656
Result& operator [](const Index& i)
@@ -752,7 +752,7 @@ namespace strong_typedef_op
752
752
};
753
753
754
754
template <class StrongTypedef >
755
- struct input_operator
755
+ struct TYPE_SAFE_MSC_EMPTY_BASES input_operator
756
756
{
757
757
// / \exclude
758
758
template <typename Char, class CharTraits >
@@ -765,7 +765,7 @@ namespace strong_typedef_op
765
765
};
766
766
767
767
template <class StrongTypedef >
768
- struct output_operator
768
+ struct TYPE_SAFE_MSC_EMPTY_BASES output_operator
769
769
{
770
770
// / \exclude
771
771
template <typename Char, class CharTraits >
0 commit comments