Issue 63463
Summary SFINAE failed if name of structure and typedef is same
Labels new issue
Assignees
Reporter raidenluikang
    See [example](https://godbolt.org/#z:OYLghAFBqd5QCxAYwPYBMCmBRdBLAF1QCcAaPECAMzwBtMA7AQwFtMQByARg9KtQYEAysib0QXACx8BBAKoBnTAAUAHpwAMvAFYTStJg1DIApACYAQuYukl9ZATwDKjdAGFUtAK4sGIMwBspK4AMngMmAByPgBGmMT%2BXKQADqgKhE4MHt6%2B/kGp6Y4CYRHRLHEJZkl2mA6ZQgRMxATZPn6Btpj2RQwNTQQlUbHxibaNza25HQrjA%2BFD5SNVAJS2qF7EyOwcJhoAgrsH%2B%2BYAzOHI3lgA1CYnbgQAnsmYAPoExEyECrfYh3/H%2B2YbAUySYWyuLAULD%2BAHYrPsZsQvA4rjMmARXjEmEpYfC9lcCVcMSxkgYMTc7o9nkDMFdsAA3RgEUhEp6MVi0gBiQgAsj9DoSrvTUHh0FcBC8mcQHhA0AwZnTGYIboErizuXzVcsTHCdQARAWEw0E4mk9G0273Nk0xVMllU9lsK4a/n7QXC0XihiS1SEWUCBUMpkqgJq5288yh5Y3XUwg3HOO3PGHRHIgioxoYl4Adzo6FExHQICuyS8MVoeGQGfNLyxOITeMFDqwVCu4XTudo%2Baa6CTsINJ2TgI5ILBtKwjTo3wbxqJmBJZItlOtHKuABV7SundgKXqhSLeycd6mUXgFDm8wX0G9MDMXggus8EiWyxWqzMiyAqGIlG82TqrETQdZ1NRcKStalVzXH4MyRU9z07btCxvO8H1oJ9LQ3DNPw9a8CEtB0bTXEAQEQq8YJg4tS3LStsJI94vFeB0AP1PsE3jI49lA81wMIqCYJPdMzwvLsrxQggqNfWiJ0%2BWgFBI4SyJ7cT70feJMP5WMByHPZBIhB4RKQosXxo99M1eJTCxYgEDiAvE9IYCVLN7LS2M4tFHGQF5sSUZoIEUy9lIxGZLRYAznJ%2BEj6TERiWXMMwwDAeLtWAhFM0rbyFF8ggIESgLRKC298LuRzvQio8opizA4rMBKktqlLkzjK4AHoWquGlR3BSFoRsw5OtBcEPMwXFZz05zJNMiEoRI4bDPI1zUs4wV%2B3%2BXT0q8nz4hynqFIQwLkOC4q3Fm8ySPK7BKu8aqVTq5K3PbCFPgYCBtV1N0Vo%2Bgl%2Bw4VZaE4ABWXg/A4LRSFQTg3GsaxUXWTYLTME4eFICTQd%2B1YAGsQEkGEADoYQCAGAE4NBxgHyaRoJ/o4SRgc0XgIY4Xh5I0FH6dWOBYBgRAUFQEk6HichKDQfn6ASYAuFJ0gsHpStMAANTwTBswAeWpThkZoWgMWIeSIBienSBicImgeDXeGN5hpRVmJtFqVHkZFthBBVhhaDNtHpcwGIvGANwxDk82vZYQxgHET38GIe28EZeTPcwVRai8DFDfbLpDYrGIPmlDwsEN948BYc3VioAxgAURXlbVxgg/4QQRDEdgpBkQRFBUdRPd0JIDCMFBocsfQ8BieTIFWVBkh6OOAFoVbMAkp4/W49VMSxrC4GEGcZYhiFFW94FWGo6mcCBXEmPwklCeYygqPQCgyAQz9vtJ74YQZr5GaoumjgQ%2BgmTw2j0IfHov85ilGGAkaosxH6QP6G/cBEgD5wy2Ag/QgM6ae0ZlcVQAAOAIU8AiSCuMAZAVZJa40IRAXAhASAqiRssXgqMtDLFWA%2BJgWAEivVIFjLgZhcaBACGYDQ5MNC4K4ETAhRNUE014EXAGrMQZg0ZszEArNGG/VIJzHmItkgCzIBQf0osRgXFDm8JEDAMZe1llsSuqt1bcF4FrHWesDae0tqbIObjra23tkHJ2TJXbu0NlgH2fsA5x2RlgEORhw5g0jtHWOhsE5JxTp7NO1MwaZ2zg8XO2wwYFyLvYkuZcK5K1sTXexLdhCiHEM3Ou8glBqENroMw%2BhQ591XgPTOI9OHj0npwGec8F4EEPMvfuFh16b3iDvLA3SD5fyPn4E%2BDB3D/1yBfZZcDFgQJSM/Ho0CdmFEyJsm%2Bn9uj1Cgas8%2BnQzk/1mMcj%2BYx%2Bj7LRM0e5EDEEbGQVwP6aDSAKIZpwLBuD8GEOMUYK4EAGLmOjJQ/ARBiC0O%2BQw9mLDMBsJGJw6mtNSCyPkYbJRtgVFszRswrh/g8ZExOBoImktJAaBhNgomAMAgaBOFIk46DFGcGRSSjR3NNEQCQOsAgpZmT6O0boyIHJOA4LwQQq4YLgBXC4CcXGGg1W8EwHCkgoo9B1IbjU6QdS26NM7nobMHxkjFykUDP5%2BLOAq2TqK8UrZZUgqISQ5V6qKEeEMQi04SLiVMNReijhPzpE4pAHIu1GDuWEtUezPl8BBUgGFaKoWBidFiylWwGVwL5WKohVCjG9DgjaumXq2QBqm5GtkCajuYNmmkAtUwK1hSbWcoBRwR1Irk4uqBXK0FPclWQrMSWiFvqs3xFoWYUtajSWsPYZQTG/gia4wBjjHhkht0AwJicQRVNODYtxTGrlTN41BvRmSswkhcZUqRtgyQ2CTiExhGYGElL2WdvBnG%2Bd4azDfoJX%2B0gW90jOEkEAA)
 
 
 if change  `int wildcard`   to   `int wildcard_t`   works fine. [source](https://godbolt.org/z/oeYKPz6sG)

source code

```
#include <type_traits>

namespace msm
{
struct state_base
{
    template <typename Event, typename FSM>
    void on_entry(const Event & , FSM& ){}
    
    template <typename Event, typename FSM>
    void on_exit(const Event & , FSM& ) {}
};

struct state_wildcard: public state_base
{
    typedef int wildcard_t; // if typedef name is wildcard  CLang failed.
};

namespace details
{
    template <typename T, typename E = void> struct is_wildcard_test_helper: public std::false_type{};
    template <typename T> struct is_wildcard_test_helper<T, std::void_t<typename T::wildcard_t> > : public std::true_type{};
}

template <typename T> struct is_wildcard_test: public details::is_wildcard_test_helper<T>{};

struct my_wildcard: public state_wildcard{

};
struct non_wildcard{};

static_assert(is_wildcard_test<my_wildcard>::value, "!");
static_assert(!is_wildcard_test<non_wildcard>::value, "!");
} // namespace msm


namespace state
{
    struct wildcard: public msm::state_wildcard{}; // Clang failed here

 
}

static_assert(msm::is_wildcard_test<::state::wildcard>::value, "!");
int main(){
     
    
}

```
 
 
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to