`supportsCopyMem` can fail from macro context with tuples
### Description

I just noticed helping someone with a problem with my https://github.com/Vindaar/forked syntax sugar library that in some cases `std/typetraits` `supportsCopyMem` can fail in a macro context.

The following code illustrates the problem

```nim
import std / [macros, typetraits]

macro forked*(body: typed): untyped = # typed or untyped does not matter
  result = quote do:
    type WIn = typeof(`body`)
    echo "Type? ", Win, " supportsCopyMem? ", Win.supportsCopyMem
    echo "Type? ", (int, Win), " supportsCopyMem? ", (int, Win).supportsCopyMem

forked:
  "foobar"
```

Note that the straightforward version without a macro:

```nim
type
  WIn = typeof("foo")
echo "Type? ", Win, " supportsCopyMem? ", Win.supportsCopyMem
echo "Type? ", (int, Win), " supportsCopyMem? ", (int, Win).supportsCopyMem
```
yields the correct output.

### Nim Version

```
Nim Compiler Version 2.2.1 [Linux: amd64]
Compiled at 2024-10-28
Copyright (c) 2006-2024 by Andreas Rumpf

git hash: 15271dba2f4772a193f027d36c05b838dfff5bd4
active boot switches: -d:release -d:danger
```

(previously tested on a devel compiler from 2024/10/13 with the same behavior)

### Current Output

```text
Type? string supportsCopyMem? false
Type? (int, string) supportsCopyMem? true
```


### Expected Output

```text
Type? string supportsCopyMem? false
Type? (int, string) supportsCopyMem? false
```


### Known Workarounds

_No response_

### Additional Information

_No response_