Is it possible for a function/method to know if a constant array that has been passed in is in flash or RAM?

If I have a method or function that receives a constant array that is in RAM, the array is declared like this:  ```const uint8_t MY_ARRAY[] = { 1, 2, 3, 4 };```

gets passed into a method or function like this:  ```MyFunction(MY_ARRAY);```

and the method or function can handle it like this:  

```
void MyFunction(const uint8_t *MY_ARRAY) {
     uint8_t secondElement = MY_ARRAY[1];
     ...
```

However, if the array is in Flash (because it's a constant array, so that's where it should go), then the declaration adds PROGMEM:   ```const uint8_t PROGMEM MY_ARRAY[] = { 1, 2, 3, 4 };```

The pass looks the same:  ```MyFunction(MY_ARRAY);```

And the function declaration looks the same but it needs to use pgm_read_byte_near to get the correct values back:
```
void MyFunction(const uint8_t *MY_ARRAY) {
     uint8_t secondElement = pgm_read_byte_near(MY_ARRAY+1);
     ...
```

How can the receiving method know if the array is in flash (PROGMEM) or RAM (no PROGMEM) so it knows to use pgm_read_byte_near or not?  Ideally I'd like a compiler error, but the type is the same (both are const arrays of uint8_t).

If pgm_read_byte_near is used when it shouldn't be, or it's not used when it should be, the results are garbage.

Some relevant questions:
[How to pass a static const (progmem) array to a function][1]

[RAM usage question: PROGMEM vs const vs #define][2]

[Storing array in PROGMEM][3]

[PROGMEM: do I have to copy data from flash to RAM for reading?][4]


  [1]: https://arduino.stackexchange.com/questions/25680/how-to-pass-a-static-const-progmem-array-to-a-function
  [2]: https://forum.arduino.cc/index.php?topic=79436.0
  [3]: https://arduino.stackexchange.com/questions/16012/storing-array-in-progmem
  [4]: https://arduino.stackexchange.com/questions/4572/progmem-do-i-have-to-copy-data-from-flash-to-ram-for-reading